206351219.doc

1

1

在一般情况下编写的对话框程序,

用户在运行的时候,

如果不注意按下了

ENTER

或者

ESC

键,

程序

就会立刻退出,之所以会这样,是因为按下

Enter

键时,

Windows

就会自动去找输入焦点落在了哪一个

按钮上,当获得焦点的按钮的四周将被点线矩形包围。如果所有按钮都没有获得输入焦点,

Windows

会自动去寻找程序或资源所指定的默认按钮

(

默认按钮边框较粗

)

。如果对话框没有默认按钮,那么即使对

话框中没有

OK

按钮,

OnOK

函数也会自动被调用,

对于一个普通的对话框程序来说,

OnOK

函数的调用,

以为着程序会立刻退出。

为了使

Enter

键无效,

最简单的办法就是将

CExDlg

OnOK

函数写成空函数,

然后针对

OK

按钮写一个新的函数来响应。

ESC

键的原理也是如此,它是默认和

OnCancel

函数映射在

一起的。对于

ESC

键,需要自己重载

CDialog

类的

PreTranslateMessage

函数,当发现是

ESC

键的

时候,过滤掉这个消息或者是替换掉这个消息。

以下是简单的代码示例:

【方法

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

的消息,和以上方法大同小异:

BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg)

{

if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE) return TRUE;

if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN) return TRUE;

else

return CDialog::PreTranslateMessage(pMsg);

}

mfc按钮名称怎么换行_MFC中解决回车键关闭窗口的一般方法相关推荐

  1. linux系统如何关闭触控板,在Deepin Linux 15.7系统中开启或关闭触摸板的方法

    在Deepin Linux 15.7操作系统中开启或关闭触摸板有两种方法,一种是图形界面中操作,另一种是命令行中使用脚本实现. 一.图形界面操作 打开Deepin Linux 15.7系统的控制中心, ...

  2. Windows Mobil中解决日期显示不正常的方法

    在SQL中经行日期转换 :convert(nvarchar(10),日期字段,126) AS 日期 转载于:https://www.cnblogs.com/maoyu417/archive/2007/ ...

  3. web页面中按ESC关闭窗口

    <script language="javascript" type="text/javascript"> document.οnkeypress= ...

  4. vue js中解决二进制转图片显示问题

    一:问题 工作中碰到的问题,在处理接口返回的验证码图片时,由于返回的是encode编码代码,在js端获取到数据之后,通过函数encodeURI()来进行解码,之后可以通过在src中设置来实现图片显示: ...

  5. MFC中解决回车和ESC关闭的问题,重载OnOk(),OnCancel()函数的正确做法

    本文参考了如下文章: http://msdn.microsoft.com/en-us/library/66b3y2ab(VS.71).aspx http://topic.csdn.net/u/2010 ...

  6. 【HTML】处理<br>换行符追加到前端换行无效的问题 --- html中渲染的字符串中包含HTML标签无效的处理方法,字符串中包含HTML标签被转义的问题 解决

    [HTML]处理 换行符追加到前端换行无效的问题 --- html中渲染的字符串中包含HTML标签无效的处理方法,字符串中包含HTML标签被转义的问题 解决 参考文章: (1)[HTML]处理 换行符 ...

  7. rf中resourceid_解决VC++ MFC程序resource.h头文件中ID重复问题

    解决VC++ MFC程序resource.h头文件中ID重复问题 2018-12-07 一般MFC开发的时候,如果有些资源是从其他工程中移植到本工程的, 而在资源移植的时候都要将对应的资源ID复制到本 ...

  8. 基于ODBC的MFC与sql_server2008r2连接教程和错误解决方法

    基于ODBC的MFC与sql_server2008r2连接教程和错误解决方法 应用环境: 编译平台:vs2013 数据库:Mysql Server2008r2 桥接软件: ODBC(微软提供的开放数据 ...

  9. JSP设置Excel表格换行_Excel中快速将阿拉伯数字转化为大写文字的妙招

    在职场办公中,Excel的使用频率可谓是非常高啦.为了保证工作可以按时完成都会学习一些自己需要的Excel技巧来辅助整理表格.今天小编为大家分享怎样快速将Excel表格中的阿拉伯数字转换成大写文字,一 ...

最新文章

  1. ov5640帧率配置_一文看懂赛博朋克2077中低配置的设置方法和能畅玩的电脑有哪些?...
  2. 基础语法(IDE:PyCharm)
  3. eclipse中无法移除jar包_IDEA中已配置阿里镜像,但maven无法下载jar包的问题
  4. JS组件系列——Bootstrap Table 表格行拖拽(二:多行拖拽)
  5. 合肥特殊教育中专学校计算机,安徽省特殊教育中专学校
  6. think python下载 中文版开源!这或许是最经典的编程教材
  7. 【原型设计】实用节:Axure RP9 的一些常用的快捷按键组合操作
  8. 开源的酷炫猜歌喝酒小程序
  9. 电商年底年终促销页面,这种创意你收好
  10. 构建第一个Spring Boot2.0应用之项目创建(一)
  11. 利用kaptcha生成登录验证码
  12. mongo数据库索引原理
  13. 你控制不了情绪,怎么过得好这一生?
  14. 图书管理系统项目导入
  15. ospf在NBMA网络中的实验(保姆级别)
  16. python获取文件路径名_python文件名获取文件路径
  17. 植入大脑电极,晚期渐冻症患者通过神经信号交流!匹配准确率80%,有效时间仅1/3...
  18. poj 1608 dp(Banal Ticket)
  19. 【云扩RPA】Table
  20. 2021-10-27 - 开发人员将大多数时间花到了探究系统本身上

热门文章

  1. Docker 领衔 OpenSource.com 2014十佳开源软件排行榜
  2. [华为机试练习题]37.合唱队
  3. bash shell简介及变量
  4. Net作业调度(二) -CrystalQuartz远程管理
  5. ArnetMiner – A Review
  6. 被坑;剪头发(普通修剪)180元!你会怎么办?
  7. 吴征:只为寻找到杨澜
  8. 波形捕捉:(8)使用“捕捉缓冲区”
  9. Dynamics CRM 2013 installation
  10. iOS开发——高级篇——iOS开发之网络安全密码学