BOOL CkeyTestView::PreTranslateMessage(MSG* pMsg){ if(pMsg->message == WM_KEYDOWN) { switch(pMsg->wParam) { case VK_TAB: CString str="tabが押された"; AfxMessageBox(str); return true; } } else{ return false; } }
2011-01-21
[C++/MFC] ダイヤログでキーボードイベントを検知する
ちょっとハマったのでメモ書き。MFCのダイヤログウィンドウは、コントロールを一つでも載せるとフォーカスがコントロールに移ってしまい、キーイベントが検知できなくなるという仕様が発覚。まあ、通常はGUIコントロールに対するクリックイベントなどが一般的だからもしれないけど、GUIアプリだってキーコマンド操作する事があったっていいはずだ。今回は、卒研のプログラムでどうしてもキーボードイベントを検知させたい必要性があったわけで、さてどうしたものかと試行錯誤しつつ解を発見。解決策は以下の通り。PreTranslateMessageメソッドを書くことで、イベントメッセージをキャッチできる。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿