屏蔽对话框控件的ESC和ENTER消息的小结
来源:互联网 发布:java post 多文件上传 编辑:程序博客网 时间:2024/06/05 01:50
在一般情况下编写的对话框程序,用户在运行的时候,如果不注意按下了ENTER或者ESC键,程序就会立刻退出,之所以会这样,是因为按下Enter键时,Windows就会自动去找输入焦点落在了哪一个按钮上,当获得焦点的按钮的四周将被点线矩形包围。如果所有按钮都没有获得输入焦点,Windows就会自动去寻找程序或资源所指定的默认按钮(默认按钮边框较粗)。
一个简单的办法是重载消息响应函数pretranslatemsg(),如下:
BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg)
...{
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE) return TRUE;
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETUEN) return TRUE;
else
return CDialog::PreTranslateMessage(pMsg);
}
...{
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE) return TRUE;
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETUEN) return TRUE;
else
return CDialog::PreTranslateMessage(pMsg);
}
可以先重载OnOK函数
voidCTestDlg::OnOK()
{ //里面什么也不写}
然后重载PreTranslateMessage函数
把ESC键的消息,用RETURN键的消息替换,这样,按ESC的时候,也会执行刚才的OnOK函数,这样问题就可以解决了。
BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg)
...{
if (pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE)
...{
pMsg->wParam=VK_RETURN; //将ESC键的消息替换为回车键的消息,这样,按ESC的时候
//也会去调用OnOK函数,而OnOK什么也不做,这样ESC也被屏蔽
}
return CDialog::PreTranslateMessage(pMsg);
}
...{
if (pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE)
...{
pMsg->wParam=VK_RETURN; //将ESC键的消息替换为回车键的消息,这样,按ESC的时候
//也会去调用OnOK函数,而OnOK什么也不做,这样ESC也被屏蔽
}
return CDialog::PreTranslateMessage(pMsg);
}
如果想达到按下enter实现焦点转移的效果,可以在以上函数中增加一个赋值即可,当然了解虚拟键表是前提。
pMsg->message = WM_KEYDOWN;
pMsg->wParam = VK_TAB;
pMsg->wParam = VK_TAB;
这样就可以达到我们的预期效果了。
ps:今天收获不少,要好好消化。
- 屏蔽对话框控件的ESC和ENTER消息的小结
- 屏蔽Dialog对话框中的Esc和Enter键的思路
- MFC屏蔽ESC和回车键退出对话框的消息
- MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法
- MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法
- MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法
- MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法
- MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法
- MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法
- MFC对话框屏蔽Enter和ESC键
- 屏蔽对话框的enter还有esc两个按钮
- 禁止对话框的enter 和 ESC 按钮
- MFC用代码实现屏蔽ESC和Enter键按下,对话框窗体关闭或者消失的问题
- VC屏蔽Enter和ESC退出程序的技巧
- 屏蔽Enter键和ESC键的方法
- 屏蔽ENTER键、ESC键的使用
- MFC 屏蔽ESC,Enter退出的问题
- 屏蔽ENTER键、ESC键的使用
- 百度天极口水战升级 天极登整版广告谴责百度
- VOIP团队(3):懒惰到底是程序员的优点还是缺点
- 50个有用网站设计的资源
- loading win32com: java.lang.UnsatisfiedLinkError: no win32com in java.library.path---短信猫开发问题解决
- 八种没有结果的感情
- 屏蔽对话框控件的ESC和ENTER消息的小结
- 面试之我见-----传说中的面霸
- JInternalFrame
- 对中国教育的对话,很好的
- Struts原理与实践(1)
- 关于java窗口关闭的疑问
- Struts原理与实践(2)
- [Appfuse学习] 起步
- 汇编上机题集锦