MFC 屏蔽ESC键和ENTER键关闭对话框的方法
重载PreTranslateMessage()函数,在这个函数里捕捉ESC键和ENTER键按下时的消息,然后什么都不做,或是添加代码完成自己想要实现的功能。
1. 完全屏蔽ESC退出键与ENTER回车键
BOOL MFCTest1Dlg::PreTranslateMessage(MSG* pMsg)
{if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)return TRUE; if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE) return TRUE; return CDialog::PreTranslateMessage(pMsg);
}
2. 屏蔽ESC退出键,捕捉ENTER回车键
// 对PreTranslateMessage函数的重载
BOOL MFCTest1Dlg::PreTranslateMessage(MSG* pMsg)
{if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN ) {//按下回车,如果当前焦点是在自己期望的控件上if(GetFocus()->GetDlgCtrlID()==IDC_MSG_SEND){ MFCTest1Dlg::OnBnClickedButtonInsert();//添加自己的处理代码}return TRUE;}if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE) {return TRUE; }return MFCTest1Dlg::PreTranslateMessage(pMsg);
}
该代码在VC中的MFC程序测试通过,完全可以实现,红色的代码是可以根据自己的实际情况修改的。
3. 屏蔽ESC键,屏蔽ENTER键退出对话框、同时捕捉编辑框ENTER键
class MFCTest1Dlg::public CDialogEx
{protected:// 对OnOK()函数的重载,清空确认事件处理,屏蔽回车键退出对话框virtual void OnOK() {}// 对OnCanel()函数的重载,清空取消事件处理,设置后不能点X图标关闭对话框//virtual void OnCancel() {}
};// 对PreTranslateMessage函数的重载
BOOL MFCTest1Dlg::PreTranslateMessage(MSG* pMsg)
{if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN ) {//按下回车,如果当前焦点是在自己期望的控件上if(GetFocus()->GetDlgCtrlID()==IDC_MSG_SEND){ MFCTest1Dlg::OnBnClickedButtonInsert();//添加自己的处理代码}return TRUE;}if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE) {return TRUE; }return MFCTest1Dlg::PreTranslateMessage(pMsg);
}
esc键和enter键在一般人的使用中会认为是取消或者确认当前输入的意思,并且认为焦点会后移(tab键),但是windows的mfc对应的是dialog的onok和oncancel函数会关闭当前窗体,所以一般就是取消作用。一切以鼠标为主,键盘只是输入的数据和字符。
MFC 屏蔽ESC键和ENTER键关闭对话框的方法相关推荐
- winform屏蔽Alt+F4组合键以防止用户关闭对话框
winform屏蔽Alt+F4组合键以防止用户关闭对话框,屏蔽Alt + F4的方法有很多,这里列出了一个比较简单而奏效的方法. 1. 捕获窗体的KeyDown事件 给窗体添加KeyDown事件,然后 ...
- Shift键和Enter键
Shift键和Enter键 前言 Shift键 Enter 总结 前言 关于之前那篇回车与换行(即"\r"和"\n")的博文,这里提出一个问题:Shift和En ...
- Vue使用Alt + Enter键替代Enter键回车,enter发送消息
因为要做一个聊天输入框,所以遇到了这个问题,因为发送消息比回车换行要常用,所以用enter键发送消息,alt+enter键回车换行 首先先给文本输入框加两个键盘事件 <textarea v-mo ...
- QT判断CapsLock键以及Enter键状态
重载 keyPressEvent 和 keyReleaseEvent 函数 void keyPressEvent(QKeyEvent *event) { //Enter键(Qt::Key_E ...
- C#:光标通过上下键或者enter键从一个textBox移动到另一个textBox或实现按键click功能
//latitudeTbx-->GDPTbx:光标通过↓移动 private void latitudeTbx_KeyDown(object sender, KeyEventArgs e) ...
- MFC 中 如何屏蔽Esc和Ente
MFC 中]如何屏蔽Esc和Enter 一般来说,对于一个默认情况下的对话框程序,用户在运行的时候,如果不小心按下了 Enter或是Esc键,程序就会立刻退出.因为:当用户按下Enter时, W ...
- C#实现用Enter键和Tab键同样功能
在Form_Load中输入如下代码: foreach(Control ctrl in this.Controls) { if ((ctrl is TextBox) || (ctrl is ...
- 屏蔽Enter键和ESC键的方法
屏蔽Enter键和ESC键的方法 一. Enter键的处理 [方法一]: 当用户按下 回车 键时,Windows发送一个特殊的WM_GETDEFID消息来获得缺省的命令ID,Windows再将它作为 ...
- 屏蔽ENTER键、ESC键的使用
一.添加函数,屏蔽ENTER键和ESC键的使用: BOOL CBingLi::PreTranslateMessage(MSG* pMsg) { // TODO: Add your special ...
最新文章
- jsp常见获取地址函数之间的不同
- greta的问题及解决: LIBCMTD.lib(_wctype.obj) : error LNK2005: _iswspace already defined in xxx.obj...
- linux umount swap,挂载、卸载、free查看内存情况、创建交换分区、回环设备、dd命令、自动挂载、fuser...
- Win 8 app 获取窗口的宽度和高度, 本地化, 及文本读取
- 一个抓取电脑屏幕的小控件台程序
- 腐蚀膨胀等形态学处理c代码
- boost::uuid模块实现宽流存档测试序列化 uuid的测试程序
- (105)FPGA面试题-查找程序中的代码错误
- c++ using 前置声明_详解C++ 前置声明
- mysql正则表达式匹配非_MySQL的正则表达式
- bzoj 1632: [Usaco2007 Feb]Lilypad Pond(BFS)
- CS224N刷题——Assignment2.3_RNN:Language Modeling
- 水箱建模最小二乘法_三年级数学上册,《万以内加减法二》单元测试卷分析(二)...
- ES 新增字符串方法
- 中国的码农们,沉睡了20年,该醒醒了
- 平衡二叉树的调整整理
- java 编配和弦_为旋律编配和弦(上)
- 二维码:MP3音频世界的进化
- 李航 《统计学习方法》习题8.1
- 交换友情链接要怎么做才能完美