- ベストアンサー
リストボックスの文字列の取得
VC++でダイアログのリストボックスに文字列を入れました。この文字列を別のエディタボックスに同じ内容を表示したいのですが、その方法がわかりません。誰か教えてください。お願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
API関数でよいのなら、SendMessage関数でLB_GETTEXTメッセージを送れば文字列が取得できます。 LB_ADDSTRINGやLB_INSERTSTRINGでリストボックスに文字列を入れることができます。 0番目のインデックスから文字列がなくなるまでこれを繰り返せばいいでしょう。 APIでやりたくないのなら他の人の回答を待ってください・・。
その他の回答 (2)
- ggaogg
- ベストアンサー率43% (38/88)
//ところで、回答の中の「LB_ADDSTRINGやLB_INSERTSTRINGでリストボックスに文字列を入れることができます」のリストボックスというのは、エディットボックスのことですよね? エディットボックスですか・・? MFC独自の名前でしょうか? 私自身勉強中なので、そこらへんよくわかりません。 「ダイアログの」というのを見落としていました。 もしダイアログの場合はどうすればいいのか知りたいのであったら、それでもそのダイアログのプロシージャに http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listboxes/listboxes.asp などが送られるんじゃないでしょうか。(確かめてない) それをうまくキャッチして処理するだけでいいと思います。
- dbk
- ベストアンサー率0% (0/3)
私も現在勉強中です。以下、正しくないコード。 ちなみに、「猫でもわかる」18~20章をつなげてみると動きました。(いいサンプルになりました) //--------------------- ダイアログでの操作----------------------------------------------------------------- LRESULT CALLBACK DlgProc(HWND hDlgWnd, UINT msg, WPARAM wp, LPARAM lp) { INT ii; char a[50]=""; switch (msg) { case WM_COMMAND: switch (LOWORD(wp)) { case IDC_COMBOBOX200: if ( HIWORD(wp) == CBN_SELENDOK) // きちんと選択された時 { ii=SendMessage(GetDlgItem(hDlgWnd, IDC_COMBOBOX200), CB_GETCURSEL, 0, 0); // 何番目を選んだか SendMessage(GetDlgItem(hDlgWnd, IDC_COMBOBOX200), CB_SETCURSEL, (WPARAM)ii, 0); // GetDlgItemText(hDlgWnd, IDC_COMBOBOX200, a, sizeof(a) ); // 選んだ文字列 http://homepage2.nifty.com/Mr_XRAY/Halbow/Chap13.html http://www.kumei.ne.jp/c_lang/sdk2/sdk_195.htm
お礼
ご返答どうもありがとうございます。とても参考になりました。 ところで、回答の中の「LB_ADDSTRINGやLB_INSERTSTRINGでリストボックスに文字列を入れることができます」のリストボックスというのは、エディットボックスのことですよね? あと、また質問なのですが、リストボックスに入っている文字列をマウスでクリックして特定の文字列を読み込むいい方法はありますか?