環境 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行追加すれば出来そうに思うのですが
WM_COMMANDはlParamにコントロールのハンドルが設定されると仮定されているので
動作が異なるならMFCがlParamの値を使って何かしているのでしょう。
VC2005ではPostMessageの第3引数にコンボボックスのハンドルを入れると
メッセージに対応する関数が呼ばれました。
返事が遅くなりまして申し訳ありません。
自分の環境で
this->PostMessage(WM_COMMAND, MAKEWPARAM(CBN_SELCHANGE, IDC_COMBO1), (LPARAM)
m_Combo1.GetSafeHwnd());
としましたが、関数が呼ばれませんでした。
もしよろしければどう書いたかソースをいただけるとありがたいです。
>this->PostMessage(WM_COMMAND, MAKEWPARAM(CBN_SELCHANGE, IDC_COMBO1), (LPARAM)
m_Combo1.GetSafeHwnd());
ハンドルはGetSafeHwnd()でいいです。
MAKEWPARAMのlowとhighの値が逆になってますが?
ありがとうございます。
逆にしたらうまくいきました。
また何かありましたらよろしくお願いします。