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

hawkbird 2003-09-18 10:21:36
如何让自己创建的模态对话框响应键盘的ESC或者ENTER键?十万火急,求教高人!
...全文
56 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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中选中“默认按钮”即可
回复
相关推荐
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2003-09-18 10:21
社区公告
暂无公告