• ベストアンサー

リストボックスの文字列の取得

VC++でダイアログのリストボックスに文字列を入れました。この文字列を別のエディタボックスに同じ内容を表示したいのですが、その方法がわかりません。誰か教えてください。お願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • ggaogg
  • ベストアンサー率43% (38/88)
回答No.1

API関数でよいのなら、SendMessage関数でLB_GETTEXTメッセージを送れば文字列が取得できます。 LB_ADDSTRINGやLB_INSERTSTRINGでリストボックスに文字列を入れることができます。 0番目のインデックスから文字列がなくなるまでこれを繰り返せばいいでしょう。 APIでやりたくないのなら他の人の回答を待ってください・・。

参考URL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listboxes/listboxes.asp
choc0
質問者

お礼

ご返答どうもありがとうございます。とても参考になりました。 ところで、回答の中の「LB_ADDSTRINGやLB_INSERTSTRINGでリストボックスに文字列を入れることができます」のリストボックスというのは、エディットボックスのことですよね? あと、また質問なのですが、リストボックスに入っている文字列をマウスでクリックして特定の文字列を読み込むいい方法はありますか?

その他の回答 (2)

  • ggaogg
  • ベストアンサー率43% (38/88)
回答No.3

//ところで、回答の中の「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)
回答No.2

私も現在勉強中です。以下、正しくないコード。 ちなみに、「猫でもわかる」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

参考URL:
http://www.kumei.ne.jp/c_lang/sdk/sdk_18.htm,http://wisdom.sakura.ne.jp/system/winapi/win32/win71.html

関連するQ&A