コンボボックスのアイテムが選択されると同時にエディットボックスを書込み可能にしたい

[戻る]
はまち 2002/03/26(火) 05:17:39
今、ツールバーのボタンから表示させたダイアログボックスに、コンボボックスとエディットボ
ックスがあり、通常は、このエディットボックスは書込みができない状態で、コンボボックスで
アイテムを選択すると、書込みができるようになる、というようなプログラムを作っています。
プログラムは次のような形です。

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です。

sara 2002/03/26(火) 08:28:04
コンボボックスのアイテムが変化したタイミングでエディットボックスの状態を更新すればよい
でしょう。
MFCのクラスウィザードを表示させて、クラス名でダイアログのクラスを選択し、オブジェクト
IDでコンボボックスのIDを選択して、メッセージでCBN_SELCHANGEを選択して関数を追加し、
その関数の中で上記のソースコードの3行目からのものを記入します。

sara 2002/03/26(火) 08:29:16
> その関数の中で上記のソースコードの3行目からのものを記入します。
 4行目の間違いでした。

はまち 2002/03/26(火) 09:16:54
saraさん、ご丁寧なお返事、ありがとうございました。saraさんの方法でうまくできるように
なりました。こんな風にメッセージを入れることもできるのですね。クラスウィザードの
メッセージ欄に他にもたくさんのメッセージがあるのを見ると、これから他にもいろんなことが
できそうで、とても楽しみになってきました。
 いつも月並みな返事になってしまうのですが、本当にありがとうございました。

はまち 2002/03/26(火) 09:18:17
[[解決]]
すみません、また、解決チェックわすれです。

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