アクセラレータキーを有効・無効に切り替えるには?

解決


geo  2003-02-27 19:30:56  No: 51146  IP: [192.*.*.*]

Windows2000, VisualC++6.0 SDI で作成しています。
FormViewにして、そこにボタン等を配置しています。
[ResouseView]-[Accelerator]から、ボタンのショートカットキーを登録して
いるのですが、全てのボタンが常に有効になっているという訳ではありません。

m_btn2.EnableWindow(FALSE); // 使用禁止
m_btn2.ShowWindow(FALSE);   // 非表示

いくつかのボタンだけが表示され、それが押されたときに、別のボタンが表示
されて、押せるようにしたいと思っています。
現在では、アクセラレータキーが常に有効になっており、ボタンが表示されて
いなくても、機能してしまいます。
何か良い方法がありましたら、教えて頂けないでしょうか。

編集 削除
Shimura  2003-02-27 21:58:06  No: 51147  IP: [192.*.*.*]

>現在では、アクセラレータキーが常に有効になっており、ボタンが表示されて
>いなくても、機能してしまいます。

IsWindowVisible() なり IsWindowEnable() なりで、フルイにかけりゃいいと思うが。そういう話ではない?

編集 削除
geo  2003-02-28 10:41:14  No: 51148  IP: [192.*.*.*]

>IsWindowVisible() なり IsWindowEnable() なりで、フルイにかけりゃいい
>と思うが。そういう話ではない?

すみません。私の勘違いだったみたいです。ボタンを無効、非表示にしていれば、
アクセラレータキーも無効になっていました。

私は、ボタンを押したときに、index番号みたいなのをだして、それを基に条件
分岐していたため、現在の表示・非表示、有効・無効は判っていたのですが、
IsWindowVisible(), IsWindowEnable()で現在の状態を確認する方が、バグが
少なくて、汎用性もあって良いかと思いました。ありがとうございます。

編集 削除