ダイアログで乗っているコントロールではなくフォーム自身でキーを拾いたいときは、CDialog::PreTranslateMessage()をオーバーライドする。
メッセージを処理したなら return TRUEを、未処理なら CDialog::PreTranlateMessage() を呼ぶこと。
BOOL CWinVendDlg::PreTranslateMessage(MSG* pMsg)
{
char c;
if (pMsg->message == WM_KEYUP) {
c = (char)pMsg->wParam;
if (c == '\r') {
AfxMessageBox(gKeyin);
gKeyin.Empty();
} else if (c == '\x1b') {
return CDialog::PreTranslateMessage(pMsg);
} else {
gKeyin += CString(c);
}
return TRUE;
}
return CDialog::PreTranslateMessage(pMsg);
}
メッセージを処理したなら return TRUEを、未処理なら CDialog::PreTranlateMessage() を呼ぶこと。
BOOL CWinVendDlg::PreTranslateMessage(MSG* pMsg)
{
char c;
if (pMsg->message == WM_KEYUP) {
c = (char)pMsg->wParam;
if (c == '\r') {
AfxMessageBox(gKeyin);
gKeyin.Empty();
} else if (c == '\x1b') {
return CDialog::PreTranslateMessage(pMsg);
} else {
gKeyin += CString(c);
}
return TRUE;
}
return CDialog::PreTranslateMessage(pMsg);
}