ちょっとハマったのでメモ書き。MFCのダイヤログウィンドウは、コントロールを一つでも載せるとフォーカスがコントロールに移ってしまい、キーイベントが検知できなくなるという仕様が発覚。まあ、通常はGUIコントロールに対するクリックイベントなどが一般的だからもしれないけど、GUIアプリだってキーコマンド操作する事があったっていいはずだ。今回は、卒研のプログラムでどうしてもキーボードイベントを検知させたい必要性があったわけで、さてどうしたものかと試行錯誤しつつ解を発見。解決策は以下の通り。PreTranslateMessageメソッドを書くことで、イベントメッセージをキャッチできる。
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;
}
}
0 件のコメント:
コメントを投稿