翻译来源:https://www.codeproject.com/Articles/2913/A-Tree-List-Control
作者:TigerX
介绍
这是从类派生的CWnd
类。它是一个列表的树控件。
特征
以下是许多功能中的一些:CTreeListCtrl
- 兼容
CTreeCtrl
&CListCtrl
- 标题拖放
- 拖放在
CTreeListCtrl
- 透明拖拉窗口与Alpha混合
- 列表的双色
- 背景图
- 复选框支持
- 锁box支持
- 嵌入式修改控制
快照1
快照2
如何使用它
将此字符串添加到 stdafx.h中#include "..\\TurboDLL\\xTurboDll.h"
定义你的控制
class CMyTreeListCtrl : public CTreeListCtrl { public: CMyTreeListCtrl(); virtual ~CMyTreeListCtrl(); protected: //{{AFX_MSG(CMyTreeListCtrl) afx_msg void OnExpanding(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnExpanded(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnUpdating(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnUpdated(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnBeginDrag(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnDragEnter(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnDragLeave(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnDragOver(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnDrop(NMHDR* pNMHDR, LRESULT* pResult); //}}AFX_MSG DECLARE_MESSAGE_MAP() };
用你的控制
class CTurboDragDlg : public CDialog { // Construction public: CTurboDragDlg(CWnd* pParent = NULL); // standard constructor ... CImageList m_ImageList; CMyTreeListCtrl m_tree1; CMyTreeListCtrl m_tree2; ... }; CTurboDragDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_ImageList.Create( IDB_BITMAP_TREE, 16, 4, 0xFF00FF ); CRect rect; GetClientRect(&rect); rect.DeflateRect( 5, 5, 5, 5 ); CRect left; left = rect; left.right = ( rect.left + rect.right ) / 2; CRect right; right = rect; right.left = ( rect.left + rect.right ) / 2; m_tree1.Create( 0x50810000, left, this, 0 ); m_tree2.Create( 0x50810000, right, this, 1 ); // Add other initialize code here ... return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
然后自由使用。