dポイントプレゼントキャンペーン実施中!

例えば、LB_HASSTRINGSスタイルのリストボックスから
SendMessage(hListBox, LB_GETITEMDATA, 0, 0);
として、リストボックスの0番目の文字列を取得したいときに、戻り値はどんな値でどのように格納すればよいのでしょうか?

英語のMSDNを見たところ、LB_ADDSTRINGやLB_INSERTSTRINGで設定した値が返る、というようなことが書かれていますが、

strcpy(CHAR testStr[1000], SendMessage(hListBox, LB_GETITEMDATA, 0, 0));
とすると「問題が発生したため終了」となって、

LPSTR testStr = SendMessage(hListBox, LB_GETITEMDATA, 0, 0);
とすると、
MessageBox(NULL, testStr, NULL, MB_OK);
で試しに表示してみると、何も表示されないメッセージボックスが表示されます。

ソースだけでもいいのでお願いします。

A 回答 (1件)

>英語のMSDNを見たところ、LB_ADDSTRINGやLB_INSERTSTRINGで設定した値が返る、というようなことが書かれていますが、



えー?そんなこと書かれてないですよ(^^;
このメッセージはアイテムに関連付けた32ビット値を取得するもので、文字列を取っくるのが目的なら
LB_GETTEXT 使いましょう。

LB_GETITEMDATA / LB_SETITEMDATAはそのアイテムにユーザ定義の何らかの32bit値を保存、取得する場合に使います。例えば構造体のアドレスとか…。
    • good
    • 0
この回答へのお礼

LB_GETTEXTがあったんですか。気づきませんでした。
英文読み違えてたってことですね。
ありがとうございました。

日本語のMSDNライブラリって、本当に情報少ないですよね・・。

お礼日時:2005/05/02 13:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!