Enter 对应“确定”、Esc 对应“取消”? 只需要将他们的ID分别设为:IDOK、IDCANCEL,然后在他们的Style中选中“默认按钮”即可
好像不可以,再者说我想响应A键或者B键该如何处理,就是如何响应WM_KEYDOWN消息?
想应ESC或者ENTER键,fengqinggao(风清高)的办法就行. 要是响应别的键 . 看看我的代码吧.我只做了 四个方向键. BOOL CKJComDlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if(pMsg->message == WM_KEYDOWN) { switch(pMsg->wParam) { case VK_UP: MessageBox("上键头"); break; case VK_DOWN: MessageBox("下键头"); break; case VK_LEFT: MessageBox("左键头"); break; case VK_RIGHT: MessageBox("右键头"); break; } } return CDialog::PreTranslateMessage(pMsg); }
这是我在对话框里处理这两个消息,不想让按Esc和Entry之后对话框关闭!BOOL CMyDlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if (pMsg->message == WM_KEYDOWN && (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN)) return TRUE;
只需要将他们的ID分别设为:IDOK、IDCANCEL,然后在他们的Style中选中“默认按钮”即可
要是响应别的键 . 看看我的代码吧.我只做了 四个方向键.
BOOL CKJComDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_UP:
MessageBox("上键头");
break;
case VK_DOWN:
MessageBox("下键头");
break;
case VK_LEFT:
MessageBox("左键头");
break;
case VK_RIGHT:
MessageBox("右键头");
break; }
} return CDialog::PreTranslateMessage(pMsg);
}
{
// TODO: Add your specialized code here and/or call the base class
if (pMsg->message == WM_KEYDOWN && (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN))
return TRUE;
return CDialog::PreTranslateMessage(pMsg);
}
LRESULT CALLBACK ServDlgConf(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hDlg,LOWORD(wParam));
return TRUE;
}
break;
case WM_KEYDOWN:
switch(wParam)
{
case VK_ESCAPE :
MessageBox(hDlg,"","",MB_OK);
break;
}
break;
}
return FALSE;
}
/////////////
对话框为模式,按下任何键都会发出嘟嘟的声音,不知道是否响应了WM_KEYDOWN消息,没有任何消息框弹出。