今、ツールバーのボタンから表示させたダイアログボックスに、コンボボックスとエディットボ
ックスがあり、通常は、このエディットボックスは書込みができない状態で、コンボボックスで
アイテムを選択すると、書込みができるようになる、というようなプログラムを作っています。
プログラムは次のような形です。
void CAutoSimulationDialog::OnPaint()
{
CPaintDC dc(this); // 描画用のデバイス コンテキスト
int index = m_cParam.GetCurSel();
if(index >= 0)
{
m_first.SetReadOnly(FALSE);
}
else
{
m_first.SetReadOnly(TRUE);
}
}
GetCurSel()でコンボボックスの状態を取得し、戻り値がによってSetReadOnly()で設定する
ようにしたのですが、これだと、ダイアログボックスを動かして再描画したときのみしか、
WM_PAINTメッセージが送られないのか、うまくエディットボックスが更新されません。
ダイアログを表示させたときからSetTimerでいつもInvaridate()させたりもしてみたのです
が、画面が点滅してしまいます。コンボボックスにアイテムが選択されると同時に、メッセージ
を取得するしたりするには、どのようにすればよいのでしょうか。
みなさん、どんなことでも結構です。なにか、お気づきな点、わかった点などあれば教えて
ください。お忙しいとは思いますがよろしくお願いします。
環境は
98SE, VC++6.0です。
コンボボックスのアイテムが変化したタイミングでエディットボックスの状態を更新すればよい
でしょう。
MFCのクラスウィザードを表示させて、クラス名でダイアログのクラスを選択し、オブジェクト
IDでコンボボックスのIDを選択して、メッセージでCBN_SELCHANGEを選択して関数を追加し、
その関数の中で上記のソースコードの3行目からのものを記入します。
> その関数の中で上記のソースコードの3行目からのものを記入します。
4行目の間違いでした。
saraさん、ご丁寧なお返事、ありがとうございました。saraさんの方法でうまくできるように
なりました。こんな風にメッセージを入れることもできるのですね。クラスウィザードの
メッセージ欄に他にもたくさんのメッセージがあるのを見ると、これから他にもいろんなことが
できそうで、とても楽しみになってきました。
いつも月並みな返事になってしまうのですが、本当にありがとうございました。
すみません、また、解決チェックわすれです。