CTreeCtrl在节点前画图的问题

zhangqiushui 2008-06-17 11:24:04
现在想在CTreeCtrl的每个Item前面画一个小矩形图标(但比Item的ImageList的图标要大),原来在节点后面图实现过,简要介绍下方法,每次通过GetItemRect获取每个节点的rect,然后定位到节点后面,画个矩形框。现在希望在节点前面画,按同样的方法,就会造成画的矩形图标覆盖掉节点已有的文字。有没有好方法可以做到在节点前面画,但有不覆盖文字。
现在是想到这个办法,每次插入节点的时候,在文字前面加空格,但是这是没有办法的办法,希望能有更好的办法,
这里先谢过了。
要是有例子,麻烦发到我的信箱aurain@yahoo.cn
...全文
123 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
scq2099yt 2008-06-17
加空格也可以为矩形留出空位而又不覆盖有效信息
  • 打赏
  • 举报
回复
wuqiangu 2008-06-17
[Quote=引用 6 楼 zhangqiushui 的回复:]
因为在自绘之前,树节点的item已经先把文字写上去了
[/Quote]

可以用InvalidateRect()刷新所要绘制的区域,即自动调用
NM_CUSTOMDRAW重新绘制。

抱歉没有具体代码。
  • 打赏
  • 举报
回复
zhangqiushui 2008-06-17
谢谢楼上的,可否有代码,因为在自绘之前,树节点的item已经先把文字写上去了
  • 打赏
  • 举报
回复
wuqiangu 2008-06-17
利用NM_CUSTOMDRAW
小矩形图标的最右边位置开始,进行文字的自绘。
  • 打赏
  • 举报
回复
zhangqiushui 2008-06-17
我这里也说明了,“但比Item的ImageList的图标要大”
  • 打赏
  • 举报
回复
zhangqiushui 2008-06-17
获取前面图标的方法不太好,因为我这里的tree是没加图标的,就算加的话,图标的宽度不够
  • 打赏
  • 举报
回复
junheng 2008-06-17
用GetIconInfo来获取图标的宽度,比如是nWidth。然后rect.DeflateRect( nWidth, 0, 0, 0 );然后再在这个矩形里面绘制文本。GetIconInfo的使用方法我就不介绍了,自己去看MSDN。
这是一般的解决办法。但是我没有在tree里试过,应该可行,你试试看吧。
  • 打赏
  • 举报
回复
相关推荐
发帖
界面

1.5w+

社区成员

VC/MFC 界面
社区管理员
  • 界面
加入社区
帖子事件
创建了帖子
2008-06-17 11:24
社区公告
暂无公告