• 締切済み

VC6でエディットボックスの扱いについて

エディットボックスに複数行のメッセージを送りたいのですが、SetDlgItemText関数を使うと、いつも同じところから文字が出力されてしまうので,うまく行きません。 ちなみに、MFCは使わず、WindowsのAPIでコードを打っています。 どなたか解決方法をご存知の方いらしましたら、宜しくお願いします。

みんなの回答

noname#2009
noname#2009
回答No.2

> やはり、というように改行と文字列を追加してゆくのが > 一番手っ取り早いのでしょうか? EDITコントロール自体に、文字位置を指定して操作する という概念があまり無いと思います。 クリップボード経由で最後尾にペーストしていくという 方法もありますが、そちらの方は前者より確実にややこしいと思われます。

noname#2009
noname#2009
回答No.1

char buf[1024]; char addstring[] = "追加行テキスト” memset(buf, 0, sizeof(buf); GetDlgItemText(hDlg, IDC_EDIT1, buf, sizeof(buf)); strcat(buf, "\r\n"); strcat(buf, addstring); SetDlgItemText(hDlg, IDC_EDIT1, buf); IDC_EDIT1・・・ES_MULTILINE を持つエディット 追加行って概念はあまり無いと思う。 打ちミスがあったら失礼します

Hide77
質問者

補足

ご回答どうもありがとうございます。 strcat(buf, "\r\n"); strcat(buf,addstring); やはり、というように改行と文字列を追加してゆくのが一番手っ取り早いのでしょうか?

関連するQ&A

  • 複数行のエディットボックスで改行入力

    複数行のエディットボックスで改行入力 MFC ダイアログベースで、簡単なテキストエディタを作成しています。 エディットボックスは固定サイズで、縦横スクロール無しにしています。 上記エディットボックスに、改行の無い2行分の文字列を出力すると自動的に折り返され、 2行で表示されるのですが、そのとき、2行目の行頭でEnterキーを押すと、 カーソル位置で改行し、空行が挿入されます。(計3行分の表示となる) 10文字文の幅のエディットボックスにて、 文字列 "12345678901234567890" をエディットボックスに出力 エディットボックスでは下記の用に表示。 1234567890 1234567890 2行目の先頭でEnterキー押下で3行表示となる 1234567890 (空行) 1234567890 実際には、1行目の終わりに改行コードが挿入されているので 空行ではなく、改行された状態の2行表示としたいのですが、 どのようにすれば、よいでしょうか? よろしくお願いします。

  • エディットボックス

    VC++、APIでwindowsプログラムを書いています。ダイアログボックスで質問があります。 case WM_INITDIALOG: SetDlgItemText(hDlg, IDC_EDIT1, "0"); return TRUE; で読み取り専用エディットボックス内に初期値を書き case WM_CTLCOLORSTATIC: { HDC hdc = (HDC)wParam ; SetTextColor( hdc, RGB( 255, 255, 255)) ;// 白色 SetBkMode(hdc, TRANSPARENT); // 背景を透過 return (BOOL)(HBRUSH)GetStockObject(NULL_BRUSH) ; } でダイアログボックス内のスタティックテキストと読み取り専用エディットボックスの背景を同時に透過させているのですが、エディットボックス内の文字を void ddd( HWND hDlg, int xxx) { char ttt[100]; sprintf(ttt,"%d",xxx); SetDlgItemText(hDlg, IDC_EDIT1, ttt); return ; } で書き換えると古いテキストが残ったように表示されます(背景に色を指定すれば古いテキストは残らない)。 うまく表示させるにはどういった方法があるでしょうか? ご存知の方、よろしくお願いします。 ちなみにダイアログボックスにはビットマップが貼ってあります。

  • エディットボックスの改行について

    よろしくお願いいたします。 環境 WIN98 VC++6.0 MFC にて 改行が可能なエディットボックスのデータをテキストファイルに保存すると、エディットボックスと同様に改行されて保存されます。 ファイルからデータを読出し、エディットボックスに表示する場合もちゃんと改行されていて問題ありません。 ここで、エディットボックスが2つあり、それぞれのエディットボックスのデータが2行あったとすると、ファイルには4行保存されます。 次にファイルからデータを読出し、エディットボックスに表示する場合、1個目のエディットボックスのデータが2行と分かっていれば良いのですが、そうでない場合は何行読み出してエディットボックスに表示すれば良いか分かりません。 そこで、1個目のデータを保存する時に、最終行の次の行にendという文字を保存することにしました。 これで、読み出すときはendを目印に必要な行数を読み出せます。 しかしながら、エディットボックスの文字の中にたまたまendが使われるとうまく行きません。 長くなりましたが、このような場合、一般的にはどのようにして対処すれば良いのでしょうか? お分かりの方よろしくお願いいたします。

  • エディットボックスの処理で画面がちらつきます。

    VC++ 6.0 Win32APIにてダイアログベースのプログラムを作成しております。 ダイアログに18個のエディットボックスを配置しておりますが、そのエディットボックスのテキストを SetDlgItemText()を使って全て空欄にすると(第3引数に””を指定)画面がちらつきます。 同ダイアログ内のリストコントロールがダブルクリックされた際のイベントを拾ってエディットボックスクリアの処理を実行しているのですが、ちらつきを抑える手法はありますでしょうか?

  • VC++2010 MFC エディットボックスの質問

    VC++2010 MFC エディットボックスの質問なんですが、 バリュー型変数を使わないでどうやったら配列(char型8byte(unsigned char[8]))の中身すべてをエディットボックスにいれて表示することができますか?よろしくお願いします。配列の中身は文字もあったりします

  • エディットボックスで改行

    お世話になっております。 VC++でプログラムを組んでおり、下記の要領でエディットボックスに文字を表示しています。 _itoa(inputData[i], receivedChar, 16 );//数値を文字列に変換 SetDlgItemText(argThr1->hWnd, IDC_EDIT2, receivedChar); このとき、エディットボックス内で、任意の位置で改行しながら表示する方法はありますでしょうか? よろしくお願い致します。 表示例 ABC(改行) DEF(改行)

  • Win32 API エディットボックス内文字列の色変更

    Win32 APIについて質問です。 (Microsoft Visual Studio .NET 2002、XP、API) エディットコントロールに表示されている文字列の 色(またはフォント)を変更したいと思っています。 エディットボックスに「0」という数字を入力し その後「更新ボタン」をクリックすると、「0」の 文字色が赤色(または赤太文字)へ変更される という具合です。 Win32 APIを始めて間もない者(Cも始めて間もないです) なので、かなり苦戦しております。 「SendMessage() 」みたいな関数を使用しエディット ボックスのハンドルへメッセージを送ることで 実現させるのかなぁ程度しか理解しておりません。 ご存じの方すいませんがよろしくお願いします。

  • VC++2010 エディットボックス 数値検出

    VC++2010 エディットボックス 数値検出について質問なんですが、 そういう関数とかありますか?  数値が0.01~65536まで入力される仕様になっており 文字列を受信したら無効にするようにしたいのですが よろしくお願いします

  • ExcelVBAでAPIを使って外部ウインドウのエディットテキストを取得する方法

    ●やりたいこと ExcelVBAで、APIを実行し、外部ソフトのウィンドウに含まれている エディットテキストを取得して、セルに出力したい 使用する関数・宣言、できればコードを教えていただけませんでしょうか。 イメージはこちらをご参考いただけると幸いです。 ​http://situmon-img.blogspot.com/2008/08/1.html​ 変数hwindowに親ウィンドウのハンドルが取得されています。 エディットボックスのハンドル、IDは分かりません。 エディットボックスのハンドルを取得し、 分かっているクラス・ハンドルの文字列を取得 といった流れになるのではと思っております。 変数にさえ文字列が取得できれば、 当然ですが、Range("B2")=変数 で大丈夫です。 変数は、ひとつを使いまわしで構いません。 変数をエディットテキストの数だけ用意しても構いません。

  • エディットボックス内でキー押されたときのメッセージ

    VC++6.0です。 メインウインドウ内のエディットボックス(一行)で、特定のキー入力を検知したいのですが、どのようにすればよいでしょうか。 mfcは使ってません。 //ウインドウプロシージャ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {  switch( message )  {   case WM_CREATE:    //エディットボックスを作成    CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT","",          WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,          0,0,2000, 20, hWnd, (HMENU)IDC_EDIT, g_hInst, NULL );    break;   case WM_COMMAND:    //エディットボックス内の変更はEN_CHANGEで受け取れるが、    //キーコードは送られてこない    break;  } }

専門家に質問してみよう