树列表控件CTreeListCtrl类

翻译来源: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
}

然后自由使用。


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CTreeListCtrl是一个功能强大的件,它兼容CTreeCtrl和CListCtrl的功能。它具有许多功能,包括标题拖放、透明拖拉窗口、Alpha混合、双色背景图、复选框支持、锁定框支持、嵌入式修改制等。\[1\] 在代码引用\[2\]中,OnLButtonDblClk函数是处理鼠标双击事件的函数。在这个函数中,首先通过HitTest函数获取鼠标点击的位置对应的CTreeListItem对象。然后判断点击的子项是否为0,如果是0表示点击的是形结构,不做修改直接返回。如果不是0,表示点击的是列表项,将该项的状态设置为TLS_MODIFY。接下来,判断点击的位置是否在项的文本上,并且该项的状态为TLS_MODIFY,如果满足条件,则开始修改该项的内容。 综上所述,CTreeListCtrl是一个功能丰富的件,可以同时具备形结构和列表的功能,并且支持许多特性和操作。 #### 引用[.reference_title] - *1* [列表CTreeListCtrl类](https://blog.csdn.net/greless/article/details/73338034)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [怎么使用CTreeListCtrl](https://blog.csdn.net/rub00001/article/details/5102283)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值