duilib 修复combo控件打开下拉菜单后不会自动定位到上次选择的位置上的bug
2017-09-14 10:26
337 查看
今天群里一个网友向我反应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添加到消息队列:
[cpp] view
plain copy
m_pm.AddNotifier(this);
4、在Notify函数添加如下代码:
[cpp] view
plain copy
void CComboWnd::Notify(TNotifyUI& msg)
{
if (msg.sType == _T("windowinit"))
{
EnsureVisible(m_iOldSel);
}
}
带有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添加到消息队列:
[cpp] view
plain copy
m_pm.AddNotifier(this);
4、在Notify函数添加如下代码:
[cpp] view
plain copy
void CComboWnd::Notify(TNotifyUI& msg)
{
if (msg.sType == _T("windowinit"))
{
EnsureVisible(m_iOldSel);
}
}
相关文章推荐
- duilib 修复combo控件打开下拉菜单后不会自动定位到上次选择的位置上的bug
- duilib combo控件,当鼠标滚动时下拉列表自动关闭的bug的修复
- duilib combo控件,当鼠标滚动时下拉列表自动关闭的bug的修复
- duilib 修复Text控件无法设置宽度的bug,增加自动加算宽度的属性
- duilib 修复Text控件无法设置宽度的bug,增加自动加算宽度的属性
- 百度地图开发--实现打开地图自动定位到上次定位点然后在定位到自己的位置
- duilib 修复padding属性导致其他控件自动计算宽高度错误的bug和导致自己宽高度错误的bug
- duilib 修复padding属性导致其他控件自动计算宽高度错误的bug和导致自己宽高度错误的bug
- vim自动打开跳到上次的光标位置
- duilib List控件,横向滚动时列表项不移动或者显示错位的bug的修复
- duilib修复ActiveXUI控件bug,以支持flash透明动态背景
- 修复duilib CEditUI控件和CWebBrowserUI控件中按Tab键无法切换焦点的bug
- duilib List控件,横向滚动时列表项不移动或者移动错位的bug的修复
- eclipse左边导航(菜单栏)package explorer自动定位(跟随打开的代码变化位置)、导航栏消失找不到解决
- 【duilib界面库】duilib界面库(干货) 修复UIScrollBar鼠标移出控件外显示异常的BUG
- 修复duilib CEditUI控件和CWebBrowserUI控件中按Tab键无法切换焦点的bug
- duilib List控件,横向滚动时列表项不移动或者移动错位的bug的修复
- duilib 修复CTreeViewUI控件动态添加子控件时,对是否显示判断不足的bug
- Idea设置单击打开文件或者双击打开文件、自动定位文件所在的位置
- duilib 修复CTreeViewUI控件动态添加子控件时,对是否显示判断不足的bug