BUG造成的影响

继承自WindowImplBase的窗口类, 如果没有重写重写ResponseDefaultKeyEvent而由WindowImplBase默认处理的话, 会导致按一次有ESC键, 导致多个窗口全部关闭.

产生原因

第1张图:

ESC按键属于PreMessage, 所以会经由这里的PreMessageHandlers处理, 如果 MessageHandler 处理了该消息, 那么她就应该置 bHandled 为 true, 以防止 ESC 消息继续往下传导致多个窗口关闭.

第2张图:

如果处理了 ResponseDefaultKeyEvent, 那个应该返回TRUE.

但实际的代码作者处理时大意了:

第3张图:

参数 hHandled 被注释掉了, 所以此函数导致的结果是:  bHandled 总是为 false.  由于为false, 进一步导致ResponseDefaultKeyEvent 的返回值无用. 所以应当像下面这样做修改.

解决方案

第4张图:

在头文件以及 MessageHandler 中开启 bHandled 参数的使用.
并修改 bHandled 的值为 ResponseDefaultKeyEvent 的返回值. 代表是否已经处理. 返回值无效, 没有使用.

参考修改: https://github.com/movsb/duilib/commit/5927b28

女孩不哭 @ cnblogs.com/memset @ 2014-07-01

转载于:https://www.cnblogs.com/memset/p/duilib_all_windows_close_once_esc.html

duilib WindowImplBase BUG修复 --- 按一次ESC键, 关闭多个窗口相关推荐

  1. C# 按Esc键关闭窗体

    第一种 //重写ProcessCmdKey的方法protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, ...

  2. element-UI el-dialog组件按ESC键关闭不了弹窗

    我的代码 <el-dialog :visible.sync="isShow" :modal="false"></el-dialog> 点 ...

  3. 怎样监听 ESC 键 完成一个弹框关闭

    vue如何监听 ESC 键 window.addEventListener v-on:keyup.esc window.addEventListener 在Vue中,可以通过监听窗口上的键盘事件来实现 ...

  4. duilib CDateTimeUI 在Xp下的bug修复

    转自:http://my.oschina.net/u/343244/blog/370131 CDateTimeUI 的bug修复.修改CDateTimeWnd的HandleMessage方法 ? 1 ...

  5. TensorFlow 1.8.0正式发布,Bug修复和改进内容都在这里了

    译者 | 王柯凝 编辑 | Just 出品 | AI科技大本营(公众号ID:rgznai100) [导语]TensorFlow 1.8.0 近日正式发布,新版本主要有以下改进内容,AI科技大本营对其编 ...

  6. TensorFlow1.8.0正式发布,Bug修复和改进内容都在这里了

    译者 | 王柯凝 编辑 | Just 出品 | AI科技大本营(公众号ID:rgznai100) [导语]TensorFlow 1.8.0 近日正式发布,新版本主要有以下改进内容,AI科技大本营对其编 ...

  7. TensorFlow 1.7.0正式发布,Bug修复和改进内容都在这里了

    编译 | AI科技大本营(公众号ID:rgznai100) 参与 | 张建军 TensorFlow 1.7.0 近日正式发布,新版本主要有以下改进内容,AI科技大本营对其进行了编译. 主要特征和改进 ...

  8. 一分钟详解initUndistortRectifyMap函数bug修复方法

    本文首发于微信公众号「3D视觉工坊」--一分钟详解initUndistortRectifyMap函数bug修复方法 在上一篇文章OpenCV中initUndistortRectifyMap函数存在bu ...

  9. Swoole 1.8.12 发布,Bug修复版本

    PHP的异步.并行.高性能网络通信引擎Swoole 已发布 1.8.12 版本.此版本是一个BUG修复版本,修复了多个细节问题.建议所有用户升级至此版本. 主要更新: 修复SwooleTable在遍历 ...

最新文章

  1. f(f(x)) = -x
  2. JavaScript中判断是否存在某属性
  3. Fiddler本机调试的方法
  4. 曼昆微观经济学第8版笔记和课后习题答案
  5. php随机给用户抽奖,PHP随机按百分比抽奖
  6. html怎么隐藏音频的图标,XP系统realtek高清晰音频管理器图标如何隐藏
  7. 编程两年后,我的2018总结
  8. 906. 超级回文数
  9. 2013/9/2 ruby on rails学习感想
  10. 芭蕉河梯级水电站群监控系统
  11. 读书——别做正常的傻瓜
  12. Uncaught DOMException: Blocked a frame with origin null from accessing a cross-origin frame.
  13. 法大大完成3.98亿元C轮融资,虎环球基金和腾讯联合领投...
  14. gensim中word2vec API参数说明
  15. java编写桌球游戏素材小球图片_java 桌球小游戏仅一份代码
  16. 把Excel数据填充word模板生成多份word文档
  17. ArcGIS Pro中管线三维符号化方法
  18. php 百度逆地理编码,百度地图开放平台 Web服务API --Geocoding API (地理编码和逆地理编码)...
  19. 【狂神说】——Spring笔记(全)
  20. 站住!你会修改NPM全局模式的默认安装路径嘛?

热门文章

  1. 空间自相关的知识总结
  2. 定量的方法如何能划分类别?
  3. android 3d模型ppt,PPT已支持3D PPT怎么插入3D模型?
  4. debian查询端口进程_centos linux系统配置查询
  5. mscoco数据集_caffe详解之数据层
  6. 设置linearlayout最大高度_ICEM CFD网格设置参数意义
  7. python 解三阶多项式系数_python – 评估多项式系数
  8. mysql 客户端_Linux桌面应用之MySQL客户端DBeaver
  9. Linux中执行shell脚本的5种方法总结
  10. 软考网络管理员学习笔记5之第五章广域网与接入网技术