コンボボックスについて

解決


hiroyuki  2002-12-02 15:48:17  No: 50771  IP: [192.*.*.*]

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

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

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

編集 削除
YuO  2002-12-02 16:58:59  No: 50772  IP: [192.*.*.*]

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

編集 削除
hiroyuki  2002-12-02 20:15:47  No: 50773  IP: [192.*.*.*]

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

編集 削除