MFC Treeview:如何将不同的图像应用于Treeview中的不同节点?

时间:2010-10-22 07:15:26

标签: c++ mfc

我想在我的MFC Treeview中将不同的图像应用到不同的节点? 目前我已经将一个图像应用到我的treeview根节点,现在我想将不同的图像应用于子节点以及如何在树视图中展开所有节点,一旦我展开一个节点,其他节点就会折叠..

目前我这样做:

    CImageList *m_pNASImageList;
CBitmap m_objRootImg;

    m_objRootImg.LoadBitmap(IDB_TREEVIEWROOTIMG); 
    m_objNASFolderImg.LoadBitmap(IDB_NASFOLDERIMG);  

    m_RootImageList = new CImageList();
m_RootImageList->Create(16,16,ILC_COLOR8,1,1);  
m_RootImageList->Add(&m_objRootImg,RGB(250,190,79)); 
m_RootImageList->Add(&m_objNASFolderImg,RGB(250,190,79)); 
m_pTreeview->SetImageList(m_RootImageList,TVSIL_NORMAL);

HTREEITEM Htvi = m_pTreeview->InsertItem("NAS1", hparentitem);
                     m_pTreeview->SetItemImage(Htvi,1,1); 
           m_pTreeview->InsertItem("Animation", Htvi);
           m_pTreeview->InsertItem("StoryBoard", Htvi);  

我为我的root加载了一个图像,为“NAS1”加载了一个图像,如何加载动画和&故事板我应该给出什么样的价值我已经拍了第三张照片...

非常感谢任何帮助。 感谢。

1 个答案:

答案 0 :(得分:1)

你可以使用BOOL SetItemImage(HTREEITEM hItem,int nImage,int nSelectedImage);它在CTreeCtrl类中。

UPD: 导入资源中的位图并加载它们:

CBitmap m_Bitmap1,m_Bitmap2,m_Bitmap3,m_Bitmap4;

m_Bitmap1.LoadBitmap(IDB_BITMAP1);
m_Bitmap2.LoadBitmap(IDB_BITMAP9);
m_Bitmap3.LoadBitmap(IDB_BITMAP10);
m_Bitmap4.LoadBitmap(IDB_BITMAP8);

为树创建图像列表: CImageList * m_ImageListTree;

m_ImageListTree = new CImageList;
m_ImageListTree->Create(IDB_BITMAP1, 16, 1, RGB(255, 255, 255));
m_ImageListTree->Add(&m_Bitmap2, RGB(255, 255, 255));
m_ImageListTree->Add(&m_Bitmap3, RGB(255, 255, 255));
m_ImageListTree->Add(&m_Bitmap4, RGB(255, 255, 255));

使用树设置图像列表:

MyTree-> SetImageList(m_ImageListTree,0);

现在,您可以使用0到3的整数来加载4个图像。