如何让自己创建的模态对话框响应键盘的ESC或者ENTER键?十万火急,求教高人!

hawkbird 2003-09-18 10:21:36
如何让自己创建的模态对话框响应键盘的ESC或者ENTER键?十万火急,求教高人!
...全文
87 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hawkbird 2003-09-19
  • 打赏
  • 举报
回复
我用的sdk,代码如下:
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消息,没有任何消息框弹出。
Phourm 2003-09-19
  • 打赏
  • 举报
回复
这是我在对话框里处理这两个消息,不想让按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;

return CDialog::PreTranslateMessage(pMsg);
}
zhaowenlong 2003-09-19
  • 打赏
  • 举报
回复
想应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);
}
hawkbird 2003-09-18
  • 打赏
  • 举报
回复
好像不可以,再者说我想响应A键或者B键该如何处理,就是如何响应WM_KEYDOWN消息?
fengqinggao 2003-09-18
  • 打赏
  • 举报
回复
Enter 对应“确定”、Esc 对应“取消”?
只需要将他们的ID分别设为:IDOK、IDCANCEL,然后在他们的Style中选中“默认按钮”即可

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧