如题,我给树控件的两个子节点添加图标,并没有给父节点添加,结果它的父节点也都有图标显示 这是为什么呢?
代码:
//首先往imageList里面添两张图
CImageList* imageList=new CImageList();
imageList->Create(19, 19, ILC_COLOR24|ILC_MASK, 20, 1);
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,"D:\\Project\\TEMP\\1.bmp",IMAGE_BITMAP,
19,19,LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
CBitmap* m_bitmap = new CBitmap();
m_bitmap->Attach(hBitmap);
imageList->Add(m_bitmap,RGB(0, 0, 0));HBITMAP hBitmap1 = (HBITMAP)LoadImage(NULL,"D:\\Project\\TEMP\\2.bmp",IMAGE_BITMAP,
19,19,LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
CBitmap* m_bitmap1 = new CBitmap();
m_bitmap1->Attach(hBitmap1);
imageList->Add(m_bitmap1,RGB(0, 0, 0));//设置TreeCtrl的属性
DWORD dwStyle = GetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE);
dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;
SetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE,dwStyle);//将TreeCtrl与imageList关联起来
m_TreeCtrl.SetImageList(imageList,TVSIL_NORMAL);HTREEITEM hRoot,hItem,hItem1,hItem2,hSubItem,hSubItem1,hSubItem2;
hRoot = m_TreeCtrl.InsertItem("我的电脑");
hItem = m_TreeCtrl.InsertItem( "Parent1 ",hRoot);
//只给如下两个子节点添加图标
hSubItem = m_TreeCtrl.InsertItem("child1",0,1,hItem);
hSubItem1 = m_TreeCtrl.InsertItem("child2",0,1,hItem,hSubItem);hItem1 = m_TreeCtrl.InsertItem( "Parent2 ",hRoot,hItem);
hItem2 = m_TreeCtrl.InsertItem( "Parent3 ",hRoot,hItem1);结果:
在所有的节点前都有图标(是我放入imageList里的第一张图片),这是为什么呢???
另外:
有没有什么方法可以在插入子节点的时候不是一个字符串 eg "child1"
而是一个其他的控件 例如子节点是个Radio Button的控件 ??请大家指教~! 谢谢~!
代码:
//首先往imageList里面添两张图
CImageList* imageList=new CImageList();
imageList->Create(19, 19, ILC_COLOR24|ILC_MASK, 20, 1);
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,"D:\\Project\\TEMP\\1.bmp",IMAGE_BITMAP,
19,19,LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
CBitmap* m_bitmap = new CBitmap();
m_bitmap->Attach(hBitmap);
imageList->Add(m_bitmap,RGB(0, 0, 0));HBITMAP hBitmap1 = (HBITMAP)LoadImage(NULL,"D:\\Project\\TEMP\\2.bmp",IMAGE_BITMAP,
19,19,LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
CBitmap* m_bitmap1 = new CBitmap();
m_bitmap1->Attach(hBitmap1);
imageList->Add(m_bitmap1,RGB(0, 0, 0));//设置TreeCtrl的属性
DWORD dwStyle = GetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE);
dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;
SetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE,dwStyle);//将TreeCtrl与imageList关联起来
m_TreeCtrl.SetImageList(imageList,TVSIL_NORMAL);HTREEITEM hRoot,hItem,hItem1,hItem2,hSubItem,hSubItem1,hSubItem2;
hRoot = m_TreeCtrl.InsertItem("我的电脑");
hItem = m_TreeCtrl.InsertItem( "Parent1 ",hRoot);
//只给如下两个子节点添加图标
hSubItem = m_TreeCtrl.InsertItem("child1",0,1,hItem);
hSubItem1 = m_TreeCtrl.InsertItem("child2",0,1,hItem,hSubItem);hItem1 = m_TreeCtrl.InsertItem( "Parent2 ",hRoot,hItem);
hItem2 = m_TreeCtrl.InsertItem( "Parent3 ",hRoot,hItem1);结果:
在所有的节点前都有图标(是我放入imageList里的第一张图片),这是为什么呢???
另外:
有没有什么方法可以在插入子节点的时候不是一个字符串 eg "child1"
而是一个其他的控件 例如子节点是个Radio Button的控件 ??请大家指教~! 谢谢~!
解决方案 »
- 为什么InternetGetCookie 在项目使用unicode时字符集时获取cookie会失败?
- 求助MFC关于这个函数:SetWindowText( LPCTSTR lpszString );
- 创建主页面不成功
- ShellExecuteEx设置隐藏有的电脑有效有的无效
- 有哪位能解释一下CSplitterWnd类中的数据成员各代表什么意思吗
- 资源读取问题?
- 昨天的面试题
- ide 智能提示问题
- 请教四个CDC类的函数SetWindowOrg(),SetViewportOrg(),SetWindowExt(),SetViewportExtt()
- 各位大兄,帮帮忙好不? 怎样实现打印对话框中编辑控件内容??
- 关于Casyncsocket的问题,求大牛们
- 请问如何在VS2008中添加ArcGIS组件引用?
你这样改下试试:
hRoot = m_TreeCtrl.InsertItem("我的电脑",1,1,TVI_ROOT);
hItem = m_TreeCtrl.InsertItem("Parent1",1,1,TVI_ROOT,hRoot);
我现在的现象就是只给两个子节点加图标,结果其他父节点也都有图标了,但是我并没有在程序上给父节点加图标啊 ,看:
hRoot = m_TreeCtrl.InsertItem("我的电脑");
hItem = m_TreeCtrl.InsertItem( "Parent1 ",hRoot);
//只给如下两个子节点添加图标
hSubItem = m_TreeCtrl.InsertItem("child1",0,1,hItem);
hSubItem1 = m_TreeCtrl.InsertItem("child2",0,1,hItem,hSubItem);hItem1 = m_TreeCtrl.InsertItem( "Parent2 ",hRoot,hItem);
hItem2 = m_TreeCtrl.InsertItem( "Parent3 ",hRoot,hItem1);我想知道这是为什么 ??还有就是怎么能解决这个问题。