コンボボックスの操作について

[戻る]
niit 2007/06/21(木) 17:30:42
環境 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 2007/06/22(金) 16:34:53
WM_COMMANDはlParamにコントロールのハンドルが設定されると仮定されているので
動作が異なるならMFCがlParamの値を使って何かしているのでしょう。
VC2005ではPostMessageの第3引数にコンボボックスのハンドルを入れると
メッセージに対応する関数が呼ばれました。

niit 2007/06/25(月) 11:55:25
返事が遅くなりまして申し訳ありません。

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

subaru 2007/06/25(月) 14:41:21
>this->PostMessage(WM_COMMAND, MAKEWPARAM(CBN_SELCHANGE, IDC_COMBO1), (LPARAM)
m_Combo1.GetSafeHwnd());

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

niit 2007/06/25(月) 16:55:58
[[解決]]
ありがとうございます。
逆にしたらうまくいきました。
また何かありましたらよろしくお願いします。

古いスレッドには追加発言できません。