duilib 修复combo控件打开下拉菜单后不会自动定位到上次选择的位置上的bug

简介: 转载请说明原出处,谢谢:http://blog.csdn.net/zhuhongshu/article/details/43484589                 今天群里一个网友向我反应combo控件的一个bug:单击combo控件,展开下拉菜单后,不会自动定位到上次选择的位置,而是定位到最开头的位置。

转载请说明原出处,谢谢:http://blog.csdn.net/zhuhongshu/article/details/43484589

       

        今天群里一个网友向我反应combo控件的一个bug:单击combo控件,展开下拉菜单后,不会自动定位到上次选择的位置,而是定位到最开头的位置。


       带有bug的效果图:                                                               修复后的效果图:


                                                                                   


       其实combo控件的下拉菜单是一个窗体,类名为CComboWnd,在他的初始化函数Init中已经得到了上次选择的项目的索引并保存到m_iOldSel变量中。所以只要使用这个变量,来初始化CComboWnd窗体的滚动条的位置就可以了。CComboWnd类中已经有了重定位函数EnsureVisible,所以在合适的时候调用这个函数就可以了。


      EnsureVisible函数需要得到上次选择项的控件的位置来初始化滚动条,而所有控件的初始化后会发送windowinit消息。所以需要做的解释给CComboWnd类继承INotifyUI接口,并且将CComboWnd添加到通知队列里,最后在windowinit消息里调用EnsureVisible函数就可以了。


修复步骤:

      

      1、给CComboWnd类继承INotifyUI接口

      2、为CComboWnd类添加 void Notify(TNotifyUI& msg) ; 成员函数

      3、在WM_CREATE消息里,把CComboWnd添加到消息队列:


m_pm.AddNotifier(this);


      4、在Notify函数添加如下代码:


void CComboWnd::Notify(TNotifyUI& msg)
{
	if (msg.sType == _T("windowinit"))
	{
		EnsureVisible(m_iOldSel);
	}
}


总结:

       

        修复后的代码已经更新到我的库里:点击打开链接


Redrain 2015.2.4


目录
相关文章
Qt实用技巧:QtCreator编辑区关闭右侧不必要的警告提示
Qt实用技巧:QtCreator编辑区关闭右侧不必要的警告提示
Qt实用技巧:QtCreator编辑区关闭右侧不必要的警告提示
MASM32编程访问系统托盘区图标/07-09-29更新
MASM32编程访问系统托盘区图标/07-09-29更新
|
8月前
|
Android开发
个人热点蓝条出现和消失时,页面下压和恢复导致页面混乱及蓝条下压页面底部控件看不到的问题
个人热点蓝条出现和消失时,页面下压和恢复导致页面混乱及蓝条下压页面底部控件看不到的问题
67 0
|
图形学
unity判断鼠标在不在UI上
unity判断鼠标在不在UI上
排错实战——你知道拖动窗口时只显示虚框怎么设置吗?
你知道拖动窗口时只显示虚框怎么设置吗?
|
数据安全/隐私保护 iOS开发 芯片
将任意应用窗口置顶显示,这个工具太强了。
将任意应用窗口置顶显示,这个工具太强了。
LabVIEW显示控件中内容过长设置自动滚动条
本篇博文分享程序设计时一个细节小技巧,在LabVIEW显示控件中内容过长设置自动滚动条。
PS的标题栏以选项卡方式打开名字太长,导致切换标题的时候不方便,如何缩短标题栏?
Q:如图:PS的标题栏以选项卡方式打开名字太长,导致切换标题的时候不方便,如何缩短标题栏?
441 0
PS的标题栏以选项卡方式打开名字太长,导致切换标题的时候不方便,如何缩短标题栏?
|
编解码 Java Android开发
Launcher 桌面布局右侧不满屏代码跟踪记录
Launcher 桌面布局右侧不满屏代码跟踪记录
98 0
|
搜索推荐 安全 iOS开发
iOS14.5更新后跟踪打不开按钮变灰
苹果终于向用户提供了新应用透明跟踪功能,这是新发布的 iOS 14.5 的一部分。新功能将允许用户选择不被第三方应用跟踪,但对一些用户来说,即使是在安装了 iOS 14.5 之后这个开关也显示为灰色,这让人们对新功能的工作原理感到困惑。
223 0
iOS14.5更新后跟踪打不开按钮变灰