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

コンボボックスのアイテムが選択されると...
 
通知
すべてクリア

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


はまち
 はまち
(@はまち)
ゲスト
結合: 24年前
投稿: 146
Topic starter  

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

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
 sara
(@sara)
ゲスト
結合: 23年前
投稿: 99
 

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


返信引用
sara
 sara
(@sara)
ゲスト
結合: 23年前
投稿: 99
 

> その関数の中で上記のソースコードの3行目からのものを記入します。
4行目の間違いでした。


返信引用
はまち
 はまち
(@はまち)
ゲスト
結合: 24年前
投稿: 146
Topic starter  

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


返信引用
はまち
 はまち
(@はまち)
ゲスト
結合: 24年前
投稿: 146
Topic starter  

すみません、また、解決チェックわすれです。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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