重载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键关闭对话框的方法相关推荐

  1. winform屏蔽Alt+F4组合键以防止用户关闭对话框

    winform屏蔽Alt+F4组合键以防止用户关闭对话框,屏蔽Alt + F4的方法有很多,这里列出了一个比较简单而奏效的方法. 1. 捕获窗体的KeyDown事件 给窗体添加KeyDown事件,然后 ...

  2. Shift键和Enter键

    Shift键和Enter键 前言 Shift键 Enter 总结 前言 关于之前那篇回车与换行(即"\r"和"\n")的博文,这里提出一个问题:Shift和En ...

  3. Vue使用Alt + Enter键替代Enter键回车,enter发送消息

    因为要做一个聊天输入框,所以遇到了这个问题,因为发送消息比回车换行要常用,所以用enter键发送消息,alt+enter键回车换行 首先先给文本输入框加两个键盘事件 <textarea v-mo ...

  4. QT判断CapsLock键以及Enter键状态

    重载 keyPressEvent 和 keyReleaseEvent 函数  void keyPressEvent(QKeyEvent *event) {     //Enter键(Qt::Key_E ...

  5. C#:光标通过上下键或者enter键从一个textBox移动到另一个textBox或实现按键click功能

    //latitudeTbx-->GDPTbx:光标通过↓移动 private void latitudeTbx_KeyDown(object sender, KeyEventArgs e)   ...

  6. MFC 中 如何屏蔽Esc和Ente

    MFC 中]如何屏蔽Esc和Enter    一般来说,对于一个默认情况下的对话框程序,用户在运行的时候,如果不小心按下了 Enter或是Esc键,程序就会立刻退出.因为:当用户按下Enter时, W ...

  7. C#实现用Enter键和Tab键同样功能

    在Form_Load中输入如下代码: foreach(Control ctrl in this.Controls)  {      if ((ctrl is TextBox) || (ctrl is  ...

  8. 屏蔽Enter键和ESC键的方法

    屏蔽Enter键和ESC键的方法 一.  Enter键的处理 [方法一]: 当用户按下 回车 键时,Windows发送一个特殊的WM_GETDEFID消息来获得缺省的命令ID,Windows再将它作为 ...

  9. 屏蔽ENTER键、ESC键的使用

    一.添加函数,屏蔽ENTER键和ESC键的使用: BOOL CBingLi::PreTranslateMessage(MSG* pMsg) {    // TODO: Add your special ...

最新文章

  1. jsp常见获取地址函数之间的不同
  2. greta的问题及解决: LIBCMTD.lib(_wctype.obj) : error LNK2005: _iswspace already defined in xxx.obj...
  3. linux umount swap,挂载、卸载、free查看内存情况、创建交换分区、回环设备、dd命令、自动挂载、fuser...
  4. Win 8 app 获取窗口的宽度和高度, 本地化, 及文本读取
  5. 一个抓取电脑屏幕的小控件台程序
  6. 腐蚀膨胀等形态学处理c代码
  7. boost::uuid模块实现宽流存档测试序列化 uuid的测试程序
  8. (105)FPGA面试题-查找程序中的代码错误
  9. c++ using 前置声明_详解C++ 前置声明
  10. mysql正则表达式匹配非_MySQL的正则表达式
  11. bzoj 1632: [Usaco2007 Feb]Lilypad Pond(BFS)
  12. CS224N刷题——Assignment2.3_RNN:Language Modeling
  13. 水箱建模最小二乘法_三年级数学上册,《万以内加减法二》单元测试卷分析(二)...
  14. ES 新增字符串方法
  15. 中国的码农们,沉睡了20年,该醒醒了
  16. 平衡二叉树的调整整理
  17. java 编配和弦_为旋律编配和弦(上)
  18. 二维码:MP3音频世界的进化
  19. 李航 《统计学习方法》习题8.1
  20. 交换友情链接要怎么做才能完美

热门文章

  1. css解决谷歌,360浏览器默认最小字体为12px问题
  2. 多倍体中亚基因组优势的潜在机制
  3. ZooKeeper知识点整理
  4. java高级人员必读十大书籍!
  5. 马云的江湖 史玉柱的兵法
  6. use SWR为什么能成为我的最爱React库?
  7. (转)U-Boot启动过程--详细版的完全分析
  8. 从新东方讲师到AI框架工程师,我的历次职业转折|OneFlow U
  9. saladict提示Invalid value for bounds bounds must be at least 50% within visible screen
  10. 在centos7.7安装搜狗输入法踩坑日记