樹狀控件編程比較複雜,在此記下來備用。
首先使用可視化對話框編輯器,拖好樹狀控件,設置好style。
然後在OnInitDialog函數中初始化樹狀控件。如下:
- //得到樹狀控件指針
- CTreeCtrl* pTree=(CTreeCtrl*)GetDlgItem(IDC_TREE1);
- //設置圖像列表
- pTree->SetImageList(&m_imageList,TVSIL_NORMAL);
- //樹狀控件元素插入結構體
- TV_INSERTSTRUCT tvinsert;
- //設置父節點爲空,則爲根節點
- tvinsert.hParent=NULL;
- //設置在節點後插入
- tvinsert.hInsertAfter=TVI_LAST;
- //設置節點是圖像和文字
- tvinsert.item.mask=TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_TEXT;
- //設置要處理的節點,此時爲根節點
- tvinsert.item.hItem=NULL;
- //設置節點狀態
- tvinsert.item.state=0;
- //設置數據項有效屏蔽位
- tvinsert.item.stateMask=0;
- //數據項名稱最大字符數
- tvinsert.item.cchTextMax=6;
- //選中時圖標
- tvinsert.item.iSelectedImage=1;
- tvinsert.item.cChildren=0;
- tvinsert.item.lParam=0;
- tvinsert.item.pszText="Homer";
- tvinsert.item.iImage=2;
- HTREEITEM hDad=pTree->InsertItem(&tvinsert);
- tvinsert.item.pszText="Marge";
- HTREEITEM hMom=pTree->InsertItem(&tvinsert);
- tvinsert.hParent=hDad;
- tvinsert.item.pszText="Bart";
- tvinsert.item.iImage=3;
- pTree->InsertItem(&tvinsert);
- tvinsert.item.pszText="Lisa";
- pTree->InsertItem(&tvinsert);
- tvinsert.hParent=hMom;
- tvinsert.item.pszText="Bart";
- tvinsert.item.iImage=4;
- pTree->InsertItem(&tvinsert);
- tvinsert.item.pszText="Lisa";
- pTree->InsertItem(&tvinsert);
- tvinsert.item.pszText="Dilbert";
- HTREEITEM hOther=pTree->InsertItem(&tvinsert);