MFC コンボボックス切り替えによるボタン表示/非表示、活性/非活性について – プログラミング – Home

MFC コンボボックス切り替えによるボ...
 
通知
すべてクリア

MFC コンボボックス切り替えによるボタン表示/非表示、活性/非活性について


べんく
 べんく
(@べんく)
ゲスト
結合: 14年前
投稿: 1
Topic starter  

VC++ VisualStudio2008
WIN7

はじめまして。
MFC使用しています。
コンボボックスの選択でボタン制御を以下のように
やりたいのですが、うまくいきません。

※ボタン1、ボタン2、ボタン3があります。

・コンボボックスでテスト1を選択
 ボタン1:表示
 ボタン2:表示
 ボタン3:表示

・コンボボックスでテスト2を選択
 ボタン1:非表示
 ボタン2:非活性
 ボタン3:表示

・コンボボックスでテスト3を選択
 ボタン1:表示
 ボタン2:活性
 ボタン3:非表示

上記のようにコンボボックスを切り替えるたびに
ボタン制御をしたいと思い、以下のように作りました。

switch(a){
 case 0:
  pBt1->EnableWindow(TRUE);
  pBt2->EnableWindow(TRUE);
  pBt3->EnableWindow(TRUE);
  break;
case 1:
  pBt1->ShowWindow(FALSE);
  pBt2->EnableWindow(FALSE);
  pBt3->EnableWindow(TRUE);
  break;
case 2:
  pBt1->ShowWindow(TRUE);
  pBt2->EnableWindow(TRUE);
  pBt3->ShowWindow(FALSE);
  break;
 default:
  break;
}

コンボボックス3からコンボボックス1に切り替えると
ボタン3(pBt3)が非表示のままになってしまいます。。

非表示になったボタンは一度表示させなくてはダメなのでしょうか?

恐れ入りますがどなたかご教授お願い致します。


引用解決済
トピックタグ
しま
 しま
(@しま)
ゲスト
結合: 18年前
投稿: 123
 

>コンボボックス3からコンボボックス1に切り替えると
>ボタン3(pBt3)が非表示のままになってしまいます。。
>
>非表示になったボタンは一度表示させなくてはダメなのでしょうか?

そうです。

ところで、質問する前に何故試してみようという気にならなかったのか
ということの方が、私には不思議です


返信引用
みい
 みい
(@みい)
ゲスト
結合: 22年前
投稿: 65
 

ShowWindowの引数はTRUE/FALSEじゃありませんよー。
ヘルプ見て下さいね。


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

「試してみた」けど、それでも疑問ということかな?

> 非表示になったボタンは一度表示させなくてはダメなのでしょうか?
ダメです。

そんなわけで、将来の仕様変更やそれに伴う不具合発生を考慮するなら、
ShowWindow(), EnableWindow()を常にセットで呼び出すのがお勧め。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

それぞれの関数の機能についてMSDN等できちんと確認しましょう。
それぞれの関数がどんな機能を持っているのか説明があるはずです。

基本的に書かれている以上の事をしたりしないので
それぞれの関数の役割を理解して使い分けたり、組み合わせて使ったり
する必要があると思います。
既に皆さんが書かれている通り、MSDN等で関数の機能を確認しつつ、
実際にテストプログラム上で動作を確認してみると良いと思います。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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