仿酷狗音乐播放器开发日志十一——CTreeNodeUI的bug修复
2014-07-26 15:47
239 查看
由于做播放列表控件,我的CMusicLength控件继承了CTreeVieWUI控件,在向分组控件中添加播放项目时,发现代码无法正常工作,调用CTreeNodeUI控件的Add方法后无反应,导致我的播放器无法动态增加项目。
在对duilib源码调试后发现,CTreeNodeUI类的AddAt方法存在bug,AddAt的原型为
long CTreeViewUI::AddAt( CTreeNodeUI* pControl, int iIndex );
其中的iIndex参数代表希望插到的位置,在函数中做了多个判断来确保插入的正确性,但其中有一行代码存在bug,bug代码如下:
CTreeNodeUI* pParent = static_cast<CTreeNodeUI*>(GetItemAt(iIndex));
if(!pParent)
return -1;
函数用来在分组中插入子元素,插入时做判断,在指定的位置的是否是可以容纳元素的分组项目,但是分组项目的位置应该是将要被插入的位置的上一个位置。原函数直接检测在被插入位置是否是分组项目,理所当然会返回NULL,导致函数最终返回-1,而插入失败。
修复的方法很简单,把 CTreeNodeUI* pParent = static_cast<CTreeNodeUI*>(GetItemAt(iIndex));改为 CTreeNodeUI* pParent = static_cast<CTreeNodeUI*>(GetItemAt(iIndex -1 ));
这样可以正确检索到分组项目,程序可以正常运行了。这个此次软件项目中发现duilib的第三个bug。mark。
2014.7.19 13:42 Redrain
在对duilib源码调试后发现,CTreeNodeUI类的AddAt方法存在bug,AddAt的原型为
long CTreeViewUI::AddAt( CTreeNodeUI* pControl, int iIndex );
其中的iIndex参数代表希望插到的位置,在函数中做了多个判断来确保插入的正确性,但其中有一行代码存在bug,bug代码如下:
CTreeNodeUI* pParent = static_cast<CTreeNodeUI*>(GetItemAt(iIndex));
if(!pParent)
return -1;
函数用来在分组中插入子元素,插入时做判断,在指定的位置的是否是可以容纳元素的分组项目,但是分组项目的位置应该是将要被插入的位置的上一个位置。原函数直接检测在被插入位置是否是分组项目,理所当然会返回NULL,导致函数最终返回-1,而插入失败。
修复的方法很简单,把 CTreeNodeUI* pParent = static_cast<CTreeNodeUI*>(GetItemAt(iIndex));改为 CTreeNodeUI* pParent = static_cast<CTreeNodeUI*>(GetItemAt(iIndex -1 ));
这样可以正确检索到分组项目,程序可以正常运行了。这个此次软件项目中发现duilib的第三个bug。mark。
2014.7.19 13:42 Redrain
相关文章推荐
- 仿酷狗音乐播放器开发日志十一——CTreeNodeUI的bug修复
- 仿酷狗音乐播放器开发日志十一——CTreeNodeUI的bug修复
- 仿酷狗音乐播放器开发日志十九——CTreeNodeUI的bug修复二(附源码)
- 仿酷狗音乐播放器开发日志十九——CTreeNodeUI的bug修复二(附源码)
- 仿酷狗音乐播放器开发日志十九——CTreeNodeUI的bug修复二(附源码)
- 仿酷狗音乐播放器开发日志二十三 修复Option控件显示状态不全的bug(附源码)
- 仿酷狗音乐播放器开发日志三——修复CEditUI的bug2
- 仿酷狗音乐播放器开发日志三——修复CEditUI的bug2
- 仿酷狗音乐播放器开发日志二十三 修复Option控件显示状态不全的bug(附源码)
- 仿酷狗音乐播放器开发日志三——修复CEditUI的bug2
- 仿酷狗音乐播放器开发日志二——搜索栏的编写
- 博客园win8客户端开发记录7 - 修复bug,发布第二版
- Android开发99%Bug修复方法
- 仿酷狗音乐播放器开发日志七——播放列表的实现二
- 仿酷狗音乐播放器开发日志七——播放列表的实现二
- 仿酷狗音乐播放器开发日志十三——左侧功能块的完善
- 仿酷狗音乐播放器开发日志九——播放列表的实现四
- 仿酷狗音乐播放器开发日志九——播放列表的实现四
- 仿酷狗音乐播放器开发日志八——播放列表的实现三
- 仿酷狗音乐播放器开发日志二——搜索栏的编写