请问CTreeCtrl图标重叠显示的问题?

gzxzb 2016-01-21 02:16:57
用VS2005, 在Dialog中使用CTreeCtr控件,设置控件的项选中时和不选中的图标,在控件中插入一些项后,本以为图标能正常显示,但控件中选择一些项之后,发现选中和不选中的图标会重叠显示在一个项上

如下图:

有‘1’字样的为未选中的图标,“2”字样的为选中时的图标。

有太神能解答一下吗?谢谢!

附代码

m_treeImage.Create(24, 24, ILC_COLOR32|ILC_MASK, 2, 2);
m_treeImage.SetBkColor(GetSysColor(COLOR_3DHILIGHT));

m_tree.ModifyStyle(0, TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT|TVS_SHOWSELALWAYS);
m_tree.SetBkColor(GetSysColor(COLOR_3DHILIGHT));

HICON hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
m_treeImage.Add(hIcon);
hIcon = AfxGetApp()->LoadIcon(IDI_ICON2);
m_treeImage.Add(hIcon);

m_tree.SetImageList(&m_treeImage, TVSIL_NORMAL);

HTREEITEM hItem1 = m_tree.InsertItem(_T("ewwwwwwwwwwww"), 0, 1);
m_tree.InsertItem(_T("111111111"), 0, 1, hItem1);
HTREEITEM hItem2 = m_tree.InsertItem(_T("rrrrrrrrrrrrr"), 0, 1);
m_tree.InsertItem(_T("111111111"), 0, 1, hItem2);

...全文
137 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzxzb 2016-01-25
  • 打赏
  • 举报
回复
CTreeCtrl绘制ICON时不会清除原来的ICON图标,直接绘制,所以 ImageList 带ILC_MASK参数Create时,ImageList中的图标有两个图片,一个是图标,一个是MASK,如果两个图标的MASKgi同,绘制时,有可能之前的图标未完全覆盖
oyljerry 2016-01-21
  • 打赏
  • 举报
回复
分享一些解决的方法啊
gzxzb 2016-01-21
  • 打赏
  • 举报
回复
我知道什么情况了

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧