2010年5月27日木曜日

MFCでのキー処理のやり方

しばらく前からMFCのVC++の仕事になってる。
なんか知らんけど、色々やっかい。
調べた事を残しておかなくては・・・

ダイアログ上の自作コントロールでキー処理を行う方法は、
ダイアログメソッドに以下を追加する。

// イベントメッセージ分配前処理
BOOL CXxxxDlg::PreTranslateMessage(MSG *pMsg)
{
if(pMsg->message!=WM_KEYDOWN) return FALSE;
// ダイアログ上の編集コントロールがフォーカスを持っていないか?
if(GetFocus()!=GetDlgItem(IDC_EDIT_A)) return FALSE;
if(GetFocus()!=GetDlgItem(IDC_EDIT_B)) return FALSE;

switch(pMsg->wParam){
case 'V':
if((GetKeyState(VK_CONTROL)&0x8000)==0) return FALSE;
// ctrl-Vの処理
break;
case VK_DELETE:
// 削除処理
break;
default: return FALSE;
}
return TRUE;
}

0 件のコメント: