正文

关于CTreeCtrl背景图在动态添加节点时的移动问题2010-03-17 18:38:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yuqiexing/50793.html

分享到:

CTreeCtrl背景图的实现在网上已经有很多了,比较著名的是这两篇:


http://www.vckbase.net/document/viewdoc/?id=355
http://www.codeguru.com/Cpp/controls/treeview/misc-advanced/article.php/c679/
 
这俩篇都实现了最基本的绘制,以及收缩和展开节点时候的刷新问题,后一篇还处理了滚动条刷新问题。这里提几点自己的实验体会,与大家共享:

(1)OnEraseBkgnd和OnPaint中的处理过程基本相同。
(2)在动态添加子项时(InsertItem),如果是插入到父节点的第一个子节点,处理OnTvnItemexpanding和OnTvnItemexpanded,刷新正常。但是如果是开始插入第二个子节点,那么不会响应OnTvnItemexpanding和OnTvnItemexpanded(因为父节点已经展开),因此会发现背景图产生偏移。这是由于InsertItem时未刷新导致的。因此只需要在调用代码InsertItem前加上下面一句即可:
m_treectrl.SetRedraw(TRUE);
 
(3)滚动条滚动刷新时 与(2)是同样的原理,要调用SetRedraw
 
(4)
http://www.codeproject.com/KB/GDI-plus/what_is_a_basename_.aspx
处理了一般CTreeCtrl等控件闪烁的问题,很为实用

阅读(4110) | 评论(2)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册