码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-07-03 10:54:45      阅读:2019      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   使用   strong   文件   

BUG造成的影响

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

 

产生原因

第1张图:
bubuko.com,布布扣

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


第2张图:
bubuko.com,布布扣

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

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

第3张图:
bubuko.com,布布扣

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

 

解决方案

第4张图:
bubuko.com,布布扣

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

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

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

duilib BUG修复 --- 按一次ESC键, 关闭多个窗口,布布扣,bubuko.com

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

标签:style   blog   http   使用   strong   文件   

原文地址:http://www.cnblogs.com/memset/p/duilib_all_windows_close_once_esc.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!