プロが教える店舗&オフィスのセキュリティ対策術

はじめまして。
質問させてください。

VC++ 2005 MFCで開発しております。

DLGにボタンを配置して
ボタン押下後自身のEnableをきります。

するとタブがダイアログ自体も含め
どこにも当たらずタブキーが効きません。
OnOk, OnCancelで処理させたいのですが
当然メッセージを取得できません。

ダイアログのアクティブを一度切り替えるとなおります。

解決方法としては
ボタン押下でEnableをきった後
ダイアログにフォーカスを当てると正常に動きます。
This->SetForcus();

これはMFCの仕様なのでしょうか?
ボタン押下後自身のEnableをきることはよく行う動きだと思いますが。

以上になります。
お詳しい方がおられましたらご教授お願い致します。

A 回答 (1件)

確かに アクティブなアプリケーションにもかかわらずフォーカスを持っているコントロールがなくなるとKeyDownなどのイベントが取れませんね



CloseボタンのクリックとALT+F4には反応するようです
OnCancelが呼ばれます

対処療法として CDialogの派生クラスにフォーカスを与えるって方法でしょう

EnableWindowを使った後で GetFocusがNULLを返すようなら
this->SetFocus() といった具合でしょうか

http://forums.microsoft.com/msdn-ja/default.aspx
で質問してみたら もう少しましな回答が得られるかも
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A