duilib进阶教程 -- Container控件的bug (14)
在《duilib进阶教程 -- TreeView控件的bug (9)》里,Alberl发现了两个bug,并解决了其中一个,现在教程已经接近尾声啦,所以Alberl就解决了另外一个bug。
Bug现象:
第一次启动软件时,由于播放列表并没有文件,所以没有显示垂直滚动条,当我们拖入文件后,就显示了垂直滚动条,这个时候会自动调整子控件的宽度,于是一切显示正常。
但是当我们第二次启动软件时,由于软件会加载文件到播放列表,所以一开始就显示了垂直滚动条,但这个时候并没有自动调整子控件的宽度,所以子控件显示到了列表的外面,如图:
其实不仅TreeView有问题,而且List也有问题,用如下代码
启动时,效果如图:
最小化一次后,效果如图:
原因:
其实这是Container的bug,而List继承于Container,Tree继承于List,所以凡是继承于Container的控件都有这个bug。因为刚启动时,滚动条Visible的初始状态是true,刷新一次后,Container才发现无需显示水平滚动条,然后才调整子控件的宽度。
解决方法:
让滚动条的初始状态为隐藏状态就行了,即在CContainerUI::EnableScrollBar函数里新建滚动条的时候,加上SetVisible(false);完整代码如下:
void CContainerUI::EnableScrollBar(bool bEnableVertical, bool bEnableHorizontal)
{
if( bEnableVertical && !m_pVerticalScrollBar ) {
m_pVerticalScrollBar = new CScrollBarUI;
m_pVerticalScrollBar->SetOwner(this);
m_pVerticalScrollBar->SetManager(m_pManager, NULL, false);
m_pVerticalScrollBar->SetVisible(false); // 这里添加
if ( m_pManager ) {
LPCTSTR pDefaultAttributes = m_pManager->GetDefaultAttributeList(_T("VScrollBar"));
if( pDefaultAttributes ) {
m_pVerticalScrollBar->ApplyAttributeList(pDefaultAttributes);
}
}
}
else if( !bEnableVertical && m_pVerticalScrollBar ) {
delete m_pVerticalScrollBar;
m_pVerticalScrollBar = NULL;
} if( bEnableHorizontal && !m_pHorizontalScrollBar ) {
m_pHorizontalScrollBar = new CScrollBarUI;
m_pHorizontalScrollBar->SetHorizontal(true);
m_pHorizontalScrollBar->SetOwner(this);
m_pHorizontalScrollBar->SetManager(m_pManager, NULL, false);
m_pHorizontalScrollBar->SetVisible(false); // 这里添加
if ( m_pManager ) {
LPCTSTR pDefaultAttributes = m_pManager->GetDefaultAttributeList(_T("HScrollBar"));
if( pDefaultAttributes ) {
m_pHorizontalScrollBar->ApplyAttributeList(pDefaultAttributes);
}
}
}
else if( !bEnableHorizontal && m_pHorizontalScrollBar ) {
delete m_pHorizontalScrollBar;
m_pHorizontalScrollBar = NULL;
} NeedUpdate();
}
duilib进阶教程 -- Container控件的bug (14)的更多相关文章
- duilib进阶教程 -- Container控件 (3)
前面两个教程的目的是教大家与MFC结合,那么从这篇起,将不再使用MFC,而使用纯win32项目,本文的所有知识已经在<duilib入门教程>里面讲过了,因此基础知识不再赘述. 代码下载:h ...
- duilib进阶教程 -- Label控件的bug (8)
上个教程说到了TreeView的文字不能垂直居中的问题,而我们用LabelUI其实是可以垂直居中的,为什么不说是TreeView的bug,而说是Label控件的bug呢?因为影响TreeView垂直居 ...
- duilib进阶教程 -- TreeView控件的bug (9)
一.不自动调整子控件的宽度(TreeView宽度小于260时) 相信亲们用同样的代码,显示效果肯定和Alberl不一样吧~O(∩_∩)O~ 嘿嘿,仔细对比下,看看你们的列表头背景图片是下面这样的么? ...
- duilib进阶教程 -- TreeView控件(6)
代码下载:http://download.csdn.net/detail/qq316293804/6483905 上一个教程中,界面已经和迅雷一模一样啦,大小和位置一个像素都不差哟,亏得Alberl调 ...
- duilib进阶教程 -- TreeView控件的不足 (7)
上一个教程中,虽然播放列表的框架和迅雷一样了,但是字体大小.文字居中还没有解决.如果是刚学duilib,搞定这个可不容易,因为在有了入门教程的指导后,很容易就想到去看[属性列表.XML],但是当你试了 ...
- duilib进阶教程 -- 各种控件的响应 (10)
到上一个教程为止,界面显示的代码就都介绍完啦,现在开始介绍控件的响应,其实在<2013 duilib入门简明教程 -- 事件处理和消息响应 (17)>里已经列出了duilib自己定义的所有 ...
- 百度地图Api进阶教程-默认控件和自定义控件2.html
<!DOCTYPE html> <html> <head> <meta name="viewport" content="ini ...
- duilib进阶教程 -- 总结 (17)
整个教程的代码下载:http://download.csdn.net/detail/qq316293804/6502207 (由于duilib进阶教程主要介绍界面,所以这个教程只给出界面相关的代码,完 ...
- 2013 duilib入门简明教程 -- 复杂控件介绍 (13)
首先将本节要介绍的控件全部拖到界面上,并调整好位置,如图: 然后将Name属性改成其他名字, 不能是[控件名+UI+数字]这种,因为这是DuiDesigner ...
随机推荐
- storyboard xib下label怎么自适应宽度高度
先看需求:两个Label,要求蓝色的label紧跟在红色的label文字后面 ok首选正常添加约束 红色的Label添加宽度,高度,左边,上边约束 蓝色的Label添加宽度,高度,左边,和红色的水平 ...
- ios 用户相册
## 获得自定义的所有相簿 // 获得所有的自定义相簿 PHFetchResult<PHAssetCollection *> *assetCollections = [PHAssetCol ...
- Particle Playground 3.03 - 粒子特效王者
<ignore_js_op> <ignore_js_op> <ignore_js_op> <ignore_js_op> <ignore_js_op ...
- python学习之路-day7
本节内容: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 面向对象高级语法部分 静态方法 ...
- makeinfo: command not found
解决办法:sudo apt-get install texinfo
- Frogger
Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sit ...
- 关于GP的理解
连续式中,CMMI有5个GG:阶段式只有3个.多出来的2个GG,一个对应的是阶段4的量化,一个是阶段5的持续优化,确保了阶段式和连续式在范围上的一致性. GG就是讲各个过程中的共有元素抽取出来,形成的 ...
- android stuido build 慢的解决办法
Enable Offline Work: Click File -> Settings. Search for "gradle" and click in Offline w ...
- JavaScript-数据引用类型对象
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- css3动画属性(transitions:property duration timing transition-delay)
transitions:property duration timing-function; transitionst他有三个参数:1) property:属性设置,例如background,colo ...