在做MFC程序开发过程中,经常会出现DEIT控制按下了ENTER或者ESC键后,程序就会立刻退出(这是MFCR )实现的一种机制,但往往并不是我们想要的),今天教大家两种方法解决。  
   
  一下是简单的代码示例:  
   
  【方法1】  
  可以先重载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);  
   
  }  
   
  【方法2】

直接在重载的PreTranslateMessage函数中屏蔽回车和ESC的消息,和以上方法大同小异:

在.h文件中加入  virtual BOOL PreTranslateMessage(MSG* pMsg);

在.C文件中实现如下代码即可!

BOOL BaseOperation::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
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操作,对了,如果程序中有多个对话框或都窗口,最好是对每一个对话框及窗口均重载PreTranslateMessage方法

MFC EDIT控件 接收“回车”与“ESC”键 退出问题!相关推荐

  1. MFC EDIT控件的使用记录

    mfc和qt不同,mfc没有单行edit控件,而qt有,下面我就来介绍mfc如何将edit设置为单行控件 CFont * f; f = new CFont; f->CreateFont( 50, ...

  2. c++:MFC EDIT控件内容的四种处理方式使用(CEdit控件类型与CString 值联动)

    EDIT控件的使用 1.UpdateData()函数 2.获取控件内容 ①句柄操作 ②变量操作 1.UpdateData()函数 //UpdateData(FALSE); //将变量的值,输出到与其关 ...

  3. MFC Edit控件 error:“DDX_Control”: 不能将参数 3 从“int”转换为“CWnd ”

    在使用MFC的Edit Control等控件时可能你会遇到这样的问题:error:"DDX_Control": 不能将参数 3 从"int"转换为"C ...

  4. MFC edit控件设为ReadOnly后,EnableWindow(TRUE)无法恢复

    那就不在界面上设置,都有代码来处理 GetDlgItem(ID_EDIT)->EnableWindow(FALSE);//只读. GetDlgItem(ID_EDIT)->EnableWi ...

  5. MFC中的edit控件

    edit control 编辑框 static control 静态文本框控件 Button 按钮控件 第一步,在VS2019中新建一个MFC项目: 第二步,打开资源视图,双击打开窗口,在工具栏中选择 ...

  6. MFC中通过SendMessage修改Edit控件的文本

    通过Windows API可以方便地实现. 3步走: HWND hWnd = ::FindWindow(NULL,"showPicture"); HWND hEdit = ::Ge ...

  7. 使用Rich Edit控件

    VC中在对话框上使用Rich Edit控件前一定要用AfxInitRichEdit()初始化RichEd... 1.设置edit只读属性 方法一:                 m_edit1.Se ...

  8. MFC RichEdit控件使用方法大全

    RichEdit简介 RichEdit的意思是"富文本编辑控件",在Edit的基础上添加了很多功能,如对不同字体.字号.文本颜色.背景色.插入Ole对象的支持,Windows系统的 ...

  9. C++ 一个程序获取另一个程序Edit控件的内容

    转载地址:https://www.cnblogs.com/lujin49/p/4796502.html //一个程序获取另一个程序Edit控件的内容 //根据指定程序的标题名获取改程序窗口的句柄 HW ...

最新文章

  1. vector容器中erase(删除)的使用
  2. 如何把Office365的更新从半年通道改成月度通道
  3. CodeForces - 1313B Different Rules(数学+思维)
  4. 【通俗易懂】理解Python中的if __name__ == ‘__main__‘
  5. LeetCode LCS 02. 完成一半题目(计数+排序)
  6. 深度理解java jvm,深度理解JVM
  7. WPF TextBox只能输入数字
  8. (4)verilog语言编写计数器
  9. 和与余数的和同余理解_余数与同余解析
  10. 【原创】PDA 实现DataGrid可编辑
  11. 二叉树的前中后序遍历的三种实现(java)以及一些小习题
  12. 创维广电服务器无线,创维电视与电脑无线投屏条件
  13. React 组件的三种写法总结
  14. docker-compose build、gradlew build、docker-compose up的个人理解
  15. Sa-token 之 SaManager
  16. 微博登录接入出现错误码21322(重定向地址不匹配),其他解决方法
  17. linux搭建ftps(vsftpd),java代码测试上传下载
  18. 利用python爬取知乎评论_一个简单的python爬虫,爬取知乎
  19. Win10出现0x8000000b错误如何解决?
  20. Linux-Day3笔记

热门文章

  1. Spring MVC 使用拦截器 HiddenHttpMethodFilter配置Rest风格的URL
  2. 自定义控件的子控件支持设计模式
  3. Java 笔试题集锦
  4. h.264 scanning process for transform coefficients
  5. 考研编程练习----递推数列(矩阵相乘法)
  6. Python 安装管理器 pythonz
  7. cPanel下安装GodaddySSL教程
  8. 如何计算MP3总时长的问题(二)
  9. C#简单操作MongoDB
  10. MongoDB使用入门