コンボボックスについて

解決


hiroyuki  2002-12-03 00:48:17  No: 50771

VC++のWin32 SDKにて作成しています。
コンボボックスをダイアログボックスに貼り付け、その初期値を設定したいのですが、下記のメッセージにてsにデータ値を入れて表示をさせたいと考えています。

SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)s );

sは、long宣言なんですが、sの部分はどうやらLPARAMの型ではいけないようなのですが、これは、整数の値はどのようにしたら代入ができるのでしょうか?
仮にsでなくて、"123"とsの部分を変更しるとエラーにはならないのです。
キャストをしてあげればいいと思ったのですが。。
もしかしたら、この方法ではいけないのでしょうか?
かりに、浮動少数の値、Stringクラスなどのデータなどはどのように代入するのでしょうか?  どうかご査収の程お願いします。


YuO  2002-12-03 01:58:59  No: 50772

WM_SETTEXTの場合,LPARAMには,
「NUL終端の文字列の最初の文字へのポインタをLPARAMにキャストしたもの」
を渡します。
つまり,例えばstringであれば,
std::string s = "..."; // 文字列
SendMessage(hWnd, WM_SETTEXT, 0, reinterpret_cast<LPARAM>(s.c_str());
のようになります。
整数や浮動小数点数は文字列に変換して送信します。
#小数は小さな数であって少ない数じゃないです。


hiroyuki  2002-12-03 05:15:47  No: 50773

YuOさん。
ありがとうございました。m(__)m


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

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






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