コンボボックスの操作について – プログラミング – Home

コンボボックスの操作について
 
通知
すべてクリア

[解決済] コンボボックスの操作について


niit
 niit
(@niit)
ゲスト
結合: 18年前
投稿: 7
Topic starter  

環境 WinXP VC++6.0

ダイアログ上のあるコンボボックスのON_CBN_SELCHANGE
メッセージを受けて画面の一部をDis/Enableしているのですが
このコンボボックスを直接
m_Combo1.SetCurSel(0);
などで変更した場合にもCBN_SELCHANGEメッセージに対応する
関数が実行されるようにしたいのですが
どうすればいいでしょうか?
イメージ的には
this->PostMessage(WM_COMMAND, MAKEWPARAM(IDC_COMBO1, CBN_SELCHANGE));
こんな感じで1行追加すれば出来そうに思うのですが


引用未解決
トピックタグ
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

WM_COMMANDはlParamにコントロールのハンドルが設定されると仮定されているので
動作が異なるならMFCがlParamの値を使って何かしているのでしょう。
VC2005ではPostMessageの第3引数にコンボボックスのハンドルを入れると
メッセージに対応する関数が呼ばれました。


返信引用
niit
 niit
(@niit)
ゲスト
結合: 18年前
投稿: 7
Topic starter  

返事が遅くなりまして申し訳ありません。

自分の環境で
this->PostMessage(WM_COMMAND, MAKEWPARAM(CBN_SELCHANGE, IDC_COMBO1), (LPARAM)
m_Combo1.GetSafeHwnd());
としましたが、関数が呼ばれませんでした。
もしよろしければどう書いたかソースをいただけるとありがたいです。


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

>this->PostMessage(WM_COMMAND, MAKEWPARAM(CBN_SELCHANGE, IDC_COMBO1), (LPARAM)
m_Combo1.GetSafeHwnd());

ハンドルはGetSafeHwnd()でいいです。
MAKEWPARAMのlowとhighの値が逆になってますが?


返信引用
niit
 niit
(@niit)
ゲスト
結合: 18年前
投稿: 7
Topic starter  

ありがとうございます。
逆にしたらうまくいきました。
また何かありましたらよろしくお願いします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました