コンボボックスの文字列を取得するには?

解決


けん  2006-11-09 23:33:01  No: 63549

Visual C++ 6.0でコンボボックスに設定した文字列を取得するにはどうしたらよいのでしょうか?
インデックスがどんな選択をしても0の場合の文字列だけが返ってきてしまいます。
宜しくお願いします。


Blue  2006-11-09 23:38:14  No: 63550

>インデックスがどんな選択をしても0の場合の文字列だけが返ってきてしまいます。
実際どのように記述していますか?

コンボボックスのリストの文字列なら(MFCのCCombBoxなら)GetLBTextあたりを使うんですが。


けん  2006-11-10 00:15:23  No: 63551

すみません。
GetLBText関数を使うと数値が戻ってきますよね?
選択した文字列を返したいのですが。


Blue  2006-11-10 00:22:25  No: 63552

>選択した文字列を返したいのですが。
そういう関数仕様ではないですよね?

<MSDN>
CComboBox::GetLBText 

void GetLBText( int nIndex, CString& rString ) const;

戻り値

文字列の終わりを示す NULL 文字を除く文字列の長さ (バイト数) を返します。
nIndex に無効なインデックスを指定した場合は、CB_ERR を返します。

引数

nIndex
    コピーするリスト ボックス文字列を 0 から始まるインデックスで指定します。

rString
    CString への参照。

解説

コンボ ボックスのリスト ボックスから文字列を取得します。2 番目の形式のメンバ関数は、
項目のテキストを CString オブジェクトで受け取ります。
</MSDN>

文字列がほしいのならば、第2引数で受け取ってください。

CString text;
m_combo.GetLBText(0, text); // インデックス0番目の文字列を取得
AfxMessageBox(text);

それと、
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200611/06110010.txt
他のインターフェースの関数を使うには?
放置しないでください。(放置は最低な行為だと思う。)


  2006-11-10 00:26:06  No: 63553

MSDNを見たほうが早いような・・・VC2005用ですが変更は無いと思うので。
http://msdn2.microsoft.com/ja-jp/library/zcy9kze7(VS.80).aspx

int GetLBText(
   int nIndex,      // インデックス
   LPTSTR lpszText  // 取得文字列(CString版もあり)
) const;

戻り:文字列の終端を示す NULL 文字を除いた文字列の長さ (バイト数) 

選択した文字列を返す関数が欲しいなら、自分でGetLblTextを包んだ関数なりを作って戻りをlpszTextなりにすればいいかと思います。

>Visual C++ 6.0でコンボボックスに設定した文字列を取得するにはどうしたらよいのでしょうか?

取得したいだけならlpszTextに入っているはずです。入っていなければ何か別の問題が。。。


  2006-11-10 00:26:38  No: 63554

Blueさん、失礼しました・・・回答が被りました。


けん  2006-11-10 01:16:04  No: 63555

ありがとうございます。
解決いたしました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加