现在的位置: 首页 > 综合 > 正文

duilib combo控件,当鼠标滚动时下拉列表自动关闭的bug的修复

2016年06月22日 ⁄ 综合 ⁄ 共 868字 ⁄ 字号 评论关闭

转载请说明出处,谢谢~~

      群里有朋友提到了使用Combo控件时,当下拉列表出现,此时鼠标滚轮滚动,下拉列表就自动消失了。我看了一下源码,这个bug的修复很简单。

      CComboUI控件被单击时创建CComboWnd窗体来模拟下拉菜单。CComboWnd类在HandleMessage函数里处理了鼠标滚动消息WM_MOUSEWHEEL,他把这个消息转发给CComboUI的DoEvent函数去处理,而CComboUI的DoEvent函数处理对应的UIEVENT_SCROLLWHEEL消息,又转而调用了SelectItem函数,SelectItem函数的第一句代码如下:

<pre name="code" class="cpp">bool CComboUI::SelectItem(int iIndex, bool bTakeFocus)
{
    if( m_pWindow != NULL ) m_pWindow->Close();
    if( iIndex == m_iCurSel ) return true;
//省略其余代码
}

      如果发现下来菜单存在,就关闭他。所以这里注释掉这一局代码就OK了,仅此而已。



      我把我自己使用的Duilib和Uilib库都上传到了GitHub,完整的Duilib库代码下载地址:点击打开链接

      这是我自己使用的Duilib和Uilib库,修复了我在博客中说明的所有bug以及很多还没有去说明的bug,同样也包含别人修复过的bug。库里面包含我扩展过的部分控件。以及添加了Duilib扩展群群主heat的透明异形窗体功能的支持。
     这个库是我用vs2010修改的。如果你无法正常打开我的库或者编译有问题,那么建议把你需要的.h或者.cpp文件替换你自己的duilib库对应的文件。
     我修改过的代码,一般可以通过搜索“redrain”找到对应的位置和修改时间
     此库是我个人使用,由于我水平所限,所以不保证我修改的代码的质量。请你看过代码后再决定是否使用。使用这个库出现问题,不承担任何责任。


  Redrain  2014.10.30

抱歉!评论已关闭.