在tree control中更改图标问题

xuxingok 2006-11-10 11:35:45
比如像资源管理器里的文件夹在展开的时候,图标换成展开的图标,如何写呢?
void CXXXXDlg::OnItemExpandingTree(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
if (TVE_EXPAND == pNMTreeView->action)
{
pNMTreeView->itemNew.iImage = 3;// 3是我的imagelist中的想改图标
pNMTreeView->itemNew.iSelectedImage = 3;
UpdateData(FALSE);
}

*pResult = 0;
}
这样写不管用啊!换成pNMTreeView->itemOld也不成,为什么啊?应该怎么写的?
谢谢~
...全文
260 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuxingok 2006-11-13
  • 打赏
  • 举报
回复
问题解决!
供大家参考:

INT_TREEITEM_IMAGE_COLLAPSE与INT_TREEITEM_IMAGE_EXPAND是const int类型

// 更改展开的图标
void CXXXXDlg::OnItemExpandingTemplateTree(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
if (TVE_EXPAND == pNMTreeView->action)
m_TreeReportTemplate.SetItemImage(
pNMTreeView->itemNew.hItem,
INT_TREEITEM_IMAGE_EXPAND,
INT_TREEITEM_IMAGE_EXPAND);
*pResult = 0;
}

// 更改折叠的图标
void CXXXXDlg::OnItemExpandedTemplateTree(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
if (TVE_COLLAPSE == pNMTreeView->action)
m_TreeReportTemplate.SetItemImage(
pNMTreeView->itemNew.hItem,
INT_TREEITEM_IMAGE_COLLAPSE,
INT_TREEITEM_IMAGE_COLLAPSE);
*pResult = 0;
}
xuxingok 2006-11-13
  • 打赏
  • 举报
回复
不会吧,这么个问题没人知道吗?
xuxingok 2006-11-13
  • 打赏
  • 举报
回复
OnPaint如何重载啊,能详细些吗?
xuxingok 2006-11-10
  • 打赏
  • 举报
回复
选中是选中,展开是展开啊~
展开时不一定就选中啊,而且我点击孩子结点的时候,就不在是选中了~
思危 2006-11-10
  • 打赏
  • 举报
回复
在插入节点时就可以指定选中状态的图标吧
pNMTreeView->itemNew.iSelectedImage = 新的;
xuxingok 2006-11-10
  • 打赏
  • 举报
回复
原来的结点是这样设置的:
m_TreeCtrlItem.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
pNMTreeView结构还用设置mask吗?
wind235 2006-11-10
  • 打赏
  • 举报
回复
自己写个Tree,重载OnPaint 自己重绘
xuxingok 2006-11-10
  • 打赏
  • 举报
回复
UP
UP
UP
xuxingok 2006-11-10
  • 打赏
  • 举报
回复
这个建立的时候我已经用了,我是要在展开的时候动态的改变结点的图标,折叠的时候再换回来,不是在初始化的时候怎么建立CImageList~~~~~~

就没人知道吗?
yxzbbc 2006-11-10
  • 打赏
  • 举报
回复
CImageList *m_pimagelist;
HICON icon[2];
icon[0]=AfxGetApp()->LoadIcon (IDI_TREE2);
icon[1]=AfxGetApp()->LoadIcon (IDI_TREE1);

m_pimagelist->Create(16, 16, TRUE | ILC_COLOR16, 4, 0);
m_pimagelist->SetBkColor (RGB(255,255,255));
m_pimagelist->Add(icon[0]); //把图标载入图像列表控件
m_pimagelist->Add(icon[1]); //把图标载入图像列表控件
CTreeCtrl* pTree=&GetTreeCtrl();
pTree->SetImageList(m_pimagelist,TVSIL_NORMAL); //为tree设置一个图像列表,使CtreeCtrl的节点显示不同的图标
pTree->SetTextColor(RGB(0,0,220));//设置tree的背景色*/
pTree->SetBkColor(RGB(255,255,255));//设置tree的背景色*/



pItem = pTree->InsertItem( TP_AREA, 0, 1, ParentItem );
或则
pItem = pTree->InsertItem( TP_AREA, 1, 0, ParentItem );

15,979

社区成员

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

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