WTL CFileTreeCtrl 类






3.19/5 (13投票s)
2003年4月23日
1分钟阅读

71540

2594
实现一个类似于 Windows Explorer 左侧的树形控件。
鸣谢
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 应用中使用该控件
- 创建一个 WTL 项目
- 设计对话框并添加树控件
- 将 WtlFileTreeCtrl.h 头文件添加到你的项目中
- 将
CWtlFileTreeCtrl
分配给你的树。 - 在
OnInitDialog()
中,使用SubclassWindow
方法将树控件(CWtlFileTreeCtrl
)子类化到 ID。 - 在你的对话框中,不要忘记添加宏
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/