treeview展开后,如何改变图标为打开状态。 treeview节点选择和未选择图标可以设置,但是当扩展后怎么改变图标,msdn我看了好半天也没弄明白,那位朋友可以帮帮我。还有ImageList_SetOverlayImage 是干什么用的,我弄不明白。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ImageList_SetOverlayImage 好象是加载图标的变量。treeview在添加项目时就设置二个图标,前一个图标为常用图标,后一个为打开图标。m_TreeCtrl->InsertItem( "treeview", 0, 0 ) TV_INSERTSTRUCT InsertStruct; InsertStruct.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE; //将当前Mcu插入到拓扑图树中 InsertStruct.hParent = hParent; InsertStruct.item.iImage = 0; // 常用图标 InsertStruct.item.iSelectedImage = 1; // 打开的图标 InsertStruct.item.pszText = "dd"; m_pTree->InsertItem(&InsertStruct); item.iSelectedImage 是选中时的图标,不是展开时的图标。展开时的图标怎么设置? 可在初始化对话框中写入以下代码:HTREEITEM hRoot;TV_INSERTSTRUCT TCItem;TCItem.hParent = TVI_ROOTT;CItem.hInsertAfter = TVI_LAST;TCItem.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGETCItem.item.pszText = "显示的内容";TCItem.item.lParam = 0; //序号TCItem.item.iImage = 0; //常用图标TCItem.item.iSelectedImage = 1;//被选种的图标hRoot = m_TreeCtrl.InsertItem(&TCItem);//返回根项句柄 HTREEITEM InsertItem( UINT nMask, LPCTSTR lpszItem, int nImage, int nSelectedImage,//这个,展开后的图标 UINT nState, UINT nStateMask, LPARAM lParam, HTREEITEM hParent, HTREEITEM hInsertAfter ); 上面回答得都不对呀!怎么都往iSelectedImage上说呀,但iSelectedImage只是选中时的图标呀! 只能自己重新设置展开的图标了,重新设置节点的iImage索引TVITEM tvItem = {0};tvItem.mask = TVIF_IMAGE;tvItem.hItem = hItem;CTreeCtrl.GetItem(&tvItem);tvItem.iImage = 2; // 展开的图标CTreeCtrl.SetItem(&tvItem); 由CTreeView扩展自己的CTreeViewEx再响应TVN_ITEMEXPANDED消息void CTreeViewEx::OnTvnItemExpanded(NMHDR *pNMHDR, LRESULT *pResult){ LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR); // TODO: 在此添加控件通知处理程序代码 CTreeCtrl &oTreeCtrl = GetTreeCtrl(); HTREEITEM hItem = pNMTreeView->itemNew.hItem; // 如果是展开操作…… // 改变图表为展开的样式 if( 2 == pNMTreeView->action ) { oTreeCtrl.SetItemImage(nYourExpendedImageId1, nYourExpendedImageId2); } else // 否则不是展开,还原图标 { oTreeCtrl.SetItemImage(nYourFormerImageId1, nYourFormerImageId2); } *pResult = 0;}细节问题自己解决 就是楼上这么的,展开的图标由消息TVN_ITEMEXPANDED控制,自己去决定它的。 MFC Excel 文件中,大量数据时, VC 如何提高 SetItem写入记录速度,送分啊!!! 频率太快时,界面刷新太快,怎么解决 mfc中,ado实现数据库编程 有关IE编程中过滤广告的问题。关于IE编程!!! VC动态链接程序转静态链接编译出错! [不好找,分享]在2000和xp下隐藏进程,VC6.0测试通过! 急救!SOS!!!ADO编程中记录集排序问题几次都没得到解决阿!请高手指点一下!!!谢谢!!! ODBC的问题,想了好几天了,帮帮我 有谁想要? 如何打印? 问个巨简单的问题
treeview在添加项目时就设置二个图标,前一个图标为常用图标,后一个为打开图标。
m_TreeCtrl->InsertItem( "treeview", 0, 0 )
InsertStruct.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE; //将当前Mcu插入到拓扑图树中
InsertStruct.hParent = hParent;
InsertStruct.item.iImage = 0; // 常用图标
InsertStruct.item.iSelectedImage = 1; // 打开的图标
InsertStruct.item.pszText = "dd";
m_pTree->InsertItem(&InsertStruct);
HTREEITEM hRoot;
TV_INSERTSTRUCT TCItem;
TCItem.hParent = TVI_ROOTT;
CItem.hInsertAfter = TVI_LAST;
TCItem.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE
TCItem.item.pszText = "显示的内容";
TCItem.item.lParam = 0; //序号
TCItem.item.iImage = 0; //常用图标
TCItem.item.iSelectedImage = 1;//被选种的图标
hRoot = m_TreeCtrl.InsertItem(&TCItem);//返回根项句柄
UINT nMask,
LPCTSTR lpszItem,
int nImage,
int nSelectedImage,//这个,展开后的图标
UINT nState,
UINT nStateMask,
LPARAM lParam,
HTREEITEM hParent,
HTREEITEM hInsertAfter
);
TVITEM tvItem = {0};
tvItem.mask = TVIF_IMAGE;
tvItem.hItem = hItem;CTreeCtrl.GetItem(&tvItem);
tvItem.iImage = 2; // 展开的图标
CTreeCtrl.SetItem(&tvItem);
再响应TVN_ITEMEXPANDED消息void CTreeViewEx::OnTvnItemExpanded(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
CTreeCtrl &oTreeCtrl = GetTreeCtrl();
HTREEITEM hItem = pNMTreeView->itemNew.hItem; // 如果是展开操作……
// 改变图表为展开的样式
if( 2 == pNMTreeView->action )
{
oTreeCtrl.SetItemImage(nYourExpendedImageId1, nYourExpendedImageId2);
}
else // 否则不是展开,还原图标
{
oTreeCtrl.SetItemImage(nYourFormerImageId1, nYourFormerImageId2);
} *pResult = 0;
}细节问题自己解决