65.9K
CodeProject 正在变化。 阅读更多。
Home

WTL CFileTreeCtrl 类

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.19/5 (13投票s)

2003年4月23日

1分钟阅读

viewsIcon

71540

downloadIcon

2594

实现一个类似于 Windows Explorer 左侧的树形控件。

Sample Image - wtlfiletreectrl.jpg

鸣谢

FileTree MFC 控件的原始作者是 PJ Naughter。该控件和文章可以在 https://codeproject.org.cn/treectrl/filetree.asp 找到。

概述

我需要在 ATL/WTL 项目中使用 FileTree 控件,因此我决定将 MFC 控件移植到 WTL。以下 ATL 文件包含移植内容

  • FileFind.h/FileFind.cpp - 包含 CFileFind 类和 WTL 实现,用于执行本地文件搜索
  • WtlFileTreeCtrl.h/WtlFileTreeCtrl.cpp - 包含 CWtlFileTreeCtrl 类和 WTL 实现

如何在你的 WTL 应用中使用该控件

  1. 创建一个 WTL 项目
  2. 设计对话框并添加树控件
  3. WtlFileTreeCtrl.h 头文件添加到你的项目中
  4. CWtlFileTreeCtrl 分配给你的树。
  5. OnInitDialog() 中,使用 SubclassWindow 方法将树控件(CWtlFileTreeCtrl)子类化到 ID。
  6. 在你的对话框中,不要忘记添加宏 REFLECT_NOTIFICATIONS ,它允许 CWtlFileTreeCtrl 接收消息,例如 TVN_ITEMEXPANDING
#include "WtlFileTreeCtrl.h"


//...


class CMainDlg : public CDialogImpl<CMainDlg>
{
     BEGIN_MSG_MAP(CMainDlg)
          ...
          MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
          REFLECT_NOTIFICATIONS()
     END_MSG_MAP()
     ...
     LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, 
         LPARAM /*lParam*/, BOOL& /*bHandled*/);
     ...
     CWtlFileTreeCtrl m_Tree;
     ...
};

//...


LRESULT CMainDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, 
        LPARAM /*lParam*/, BOOL& /*bHandled*/) 

{
     ...
     m_Tree.SubclassWindow( ::GetDlgItem( m_hWnd, IDC_TREE1 ) );
     ...
}

要求

你需要 WTL 库,可以从微软网站下载。

注意 - 该控件使用 STL std::string 类和 STL std::vector 模板类。

联系作者

Ilya Solnyshkin,邮箱:isolnyshkin@yahoo.com,网站:http://www.printsniffer.com/

© . All rights reserved.