MFC控件:樹形控件(CTreeCtrl)


樹形控件划分:

  根節點:所有都收縮后的節點

  節點:    能展開

  葉:  不能展開

  說明: 節點和葉不是絕對的划分,當在對葉添加新下屬后,該葉變為節點

樹形控件操作邏輯:

1、創建控件 CTreeCtrl類的Create成員函數的原型如下:

virtual BOOL Create(
    DWORD dwStyle,      //控件風格
    const RECT& rect,    //控件窗口的位置和大小
    CWnd* pParentWnd,    //控件父窗口的指針
    UINT nID          //控件的ID
);

  控件的主要風格以及含義。 TVS_DISABLEDRAGDROP:禁止樹形控件發送TVN_BEGINDRAG通知消息,即不支持拖動操作;TVS_EDITLABELS:用戶可以編輯節點的標簽文本;TVS_HASBUTTONS:顯示帶有"+"或"-"的小方框來表示某項能否被展開或已展開;TVS_HASLINES:在父節點與子節點間連線以更清晰地顯示樹的結構;TVS_LINESATROOT:在根節點處連線;TVS_SHOWSELALWAYS:即使控件失去輸入焦點,仍顯示出項的選擇狀態;同樣,動態創建樹形控件時,除了能夠指定上述風格的組合外,一般還要指定WS_CHILDWS_VISIBLE風格。

2.添加圖標類

3.添加節點

4.消息響應函數

 

樹形控件添加:

  節點結構體:  HTREEITEM ,用該結構體聲明節點變量

  為控件添加項:  

HTREEITEM InsertItem(
LPCTSTR lpszItem,            //項名
int nImage,                //樹視圖控件圖像列表中的項的圖像的索引
int nSelectedImage,           //樹視圖控件圖像列表中的項的所選圖像的索引
HTREEITEM hParent = TVI_ROOT,     //插入的項的父級的句柄
HTREEITEM hInsertAfter = TVI_LAST  //新的項之前要插入的項的句柄
);
注:添加項之前先設定根節點,在初始化

樹形控件鼠標點擊:

  判斷鼠標位置

HTREEITEM CMyTreeDlg::GetSelectTree()
{
    CPoint pt;
    GetCursorPos(&pt);//得到當前鼠標的位置
    m_MyTree.ScreenToClient(&pt);//將屏幕坐標轉換為客戶區坐標
    HTREEITEM tree_Item = m_MyTree.HitTest(pt);//調用HitTest找到對應點擊的樹節點
    return tree_Item; //返回鼠標位置節點
}

  獲取某項文本

  CString GetItemText(HTREEITEM hItem) const;

  獲取指定關系項

  HTREEITEM GetNextItem( HTREEITEM hItem, UINT nCode) const;

  nCode標志可以是下列值之一︰TVGN_CARET檢索當前所選的項TVGN_CHILD檢索由指定的項的第一個子項目hItem參數。TVGN_DROPHILITE檢索拖放操作的目標的項TVGN_FIRSTVISIBLE檢索第一個可見項TVGN_LASTVISIBLE檢索在樹中最后一個展開的項目。 這並不檢索樹視圖窗口中可見的最后一項TVGN_NEXT檢索下一個同級項TVGN_NEXTVISIBLE檢索遵循指定的項的下一個可見項TVGN_PARENT檢索指定項的父級TVGN_PREVIOUS檢索前面的同級項TVGN_PREVIOUSVISIBLE檢索位於指定的項的第一個可見項TVGN_ROOT檢索指定的項的一部分的根項的第一個子級項

   獲取指定項的父項

  HTREEITEM GetParentItem(HTREEITEM hItem) const;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM