SimpleWindow
载入中...
搜索中...
未找到
TreeView.h
1#include "ImageList.h"
2#include "ItemsControl.h"
3#include <commctrl.h>
4
5namespace sw
6{
10 enum class TreeViewImageList {
13 };
14
18 class TreeViewNode : public IToString<TreeViewNode>,
19 public IEqualityComparable<TreeViewNode>
20 {
21 private:
25 HWND _hwnd;
26
30 HTREEITEM _hitem;
31
32 public:
36 TreeViewNode() = default;
37
42
47
52
56 std::wstring ToString() const;
57
61 bool Equals(const TreeViewNode &other) const;
62
66 bool IsNull() const;
67
71 operator bool() const;
72
76 std::wstring GetText() const;
77
82 bool SetText(const std::wstring &text);
83
89
95
101
107
112 TreeViewNode InsertAfter(const std::wstring &text);
113
118 TreeViewNode AddChild(const std::wstring &text);
119
124 bool IsSelected() const;
125
130 bool Select();
131
136 bool Delete();
137
142 bool IsExpanded() const;
143
148 bool SetExpand(bool expand);
149
154 bool Expand();
155
160 bool Collapse();
161
165 void *GetUserData() const;
166
171 bool SetUserData(void *data);
172
177 bool IsChecked() const;
178
182 void SetCheck(bool check);
183
189
193 int GetChildCount() const;
194
200 };
201
202 // clang-format off
203
207 struct TreeViewItemExpandingEventArgs : TypedRoutedEventArgs<TreeView_ItemExpanding, CancelableEventArgs> {
208 bool action; // true表示展开,false表示折叠
209 TreeViewNode node; // 正在展开或折叠的节点
210 TreeViewItemExpandingEventArgs(bool action, const TreeViewNode &node): action(action), node(node) {}
211 };
212
216 struct TreeViewItemExpandedEventArgs : TypedRoutedEventArgs<TreeView_ItemExpanding> {
217 bool action; // true表示展开,false表示折叠
218 TreeViewNode node; // 已展开或折叠的节点
219 TreeViewItemExpandedEventArgs(bool action, const TreeViewNode &node): action(action), node(node) {}
220 };
221
225 struct TreeViewCheckStateChangedEventArgs : TypedRoutedEventArgs<TreeView_CheckStateChanged> {
226 int checkState; // 复选框的新状态,0表示未选中,1表示选中,-1表示无复选框
227 TreeViewNode node; // 复选框状态改变的节点
228 TreeViewCheckStateChangedEventArgs(int checkState, const TreeViewNode &node): checkState(checkState), node(node) {}
229 };
230
231 // clang-format on
232
236 class TreeView : public ItemsControl<TreeViewNode>
237 {
238 private:
243
244 public:
249
254
259
264
269
270 public:
275
276 protected:
280 virtual int GetItemsCount() override;
281
285 virtual int GetSelectedIndex() override;
286
290 virtual void SetSelectedIndex(int index) override;
291
295 virtual TreeViewNode GetSelectedItem() override;
296
302 virtual void SetBackColor(Color color, bool redraw) override;
303
309 virtual void SetTextColor(Color color, bool redraw) override;
310
317 virtual bool OnNotified(NMHDR *pNMHDR, LRESULT &result) override;
318
326
334
340
347
353
359
360 public:
364 virtual void Clear() override;
365
370 virtual TreeViewNode GetItemAt(int index) override;
371
378 virtual bool AddItem(const TreeViewNode &item) override;
379
387 virtual bool InsertItem(int index, const TreeViewNode &item) override;
388
396 virtual bool UpdateItem(int index, const TreeViewNode &newValue) override;
397
403 virtual bool RemoveItemAt(int index) override;
404
410 TreeViewNode AddItem(const std::wstring &text);
411
418 TreeViewNode InsertItem(int index, const std::wstring &text);
419
425
432
433 private:
437 TreeViewNode _GetRoot();
438
442 TreeViewNode _InsertItem(HTREEITEM hParent, HTREEITEM hInsertAfter, const std::wstring &text);
443 };
444}
相等性比较接口
Definition IComparable.h:14
为支持ToString方法的类提供统一接口
Definition IToString.h:13
值转换器接口
Definition IValueConverter.h:14
图像列表
Definition ImageList.h:12
表示可用于呈现一组项的控件
Definition ItemsControl.h:20
树视图项
Definition TreeView.h:20
bool IsExpanded() const
判断当前节点是否展开
bool IsNull() const
判断当前项是否为空
bool SetExpand(bool expand)
设置当前节点展开或折叠
HTREEITEM GetHandle() const
获取当前项的句柄
bool SetImages(int imageIndex, int selectedImageIndex)
设置当前节点的图像
bool Expand()
展开当前节点
TreeViewNode()=default
默认构造函数
int DeleteAllChildren()
删除当前节点的所有子节点
bool Delete()
删除当前节点
bool SetText(const std::wstring &text)
设置当前项的文本
TreeViewNode GetParent() const
获取父节点
HWND GetOwnerHandle() const
获取所属树视图控件的窗口句柄
bool SetUserData(void *data)
设置与当前节点关联的用户数据
TreeViewNode GetNextNode() const
获取下一个节点
TreeViewNode GetPreviousNode() const
获取上一个节点
int GetChildCount() const
获取当前节点的直接子节点数
bool Collapse()
折叠当前节点
void SetCheck(bool check)
设置当前节点的复选框选中状态
std::wstring ToString() const
获取当前项的文本
void * GetUserData() const
获取与当前节点关联的用户数据
bool Select()
选中当前节点
std::wstring GetText() const
获取当前项的文本
TreeViewNode GetFirstChildNode() const
获取第一个子节点
TreeViewNode AddChild(const std::wstring &text)
添加子节点到当前节点下
bool IsSelected() const
判断当前节点是否被选中
TreeViewNode(HWND hwnd, HTREEITEM hitem)
创建TreeViewItem
bool IsChecked() const
判断当前节点是否被选中复选框
bool Equals(const TreeViewNode &other) const
判断当前项与另一个项是否相等
TreeViewNode InsertAfter(const std::wstring &text)
在当前节点后插入新节点
树视图控件
Definition TreeView.h:237
const Property< double > IndentWidth
缩进宽度
Definition TreeView.h:268
virtual void SetBackColor(Color color, bool redraw) override
设置背景颜色
virtual bool OnNotified(NMHDR *pNMHDR, LRESULT &result) override
父窗口接收到WM_NOTIFY后且父窗口OnNotify函数返回false时调用发出通知控件的该函数
virtual void SetSelectedIndex(int index) override
设置选中项索引
virtual void OnGetDispInfo(NMTVDISPINFOW *pNMInfo)
当OnNotified接收到TVN_GETDISPINFO通知时调用该函数
virtual TreeViewNode GetItemAt(int index) override
获取指定索引处子项的值
virtual bool OnItemExpanding(NMTREEVIEWW *pNMTV)
节点展开或折叠前调用该函数
virtual bool AddItem(const TreeViewNode &item) override
添加新的子项
const Property< Color > LineColor
线条颜色
Definition TreeView.h:263
virtual bool OnDoubleClicked(NMHDR *pNMHDR, LRESULT &result)
控件被双击时调用该函数
virtual TreeViewNode GetSelectedItem() override
获取选中项
virtual int GetSelectedIndex() override
选中项的索引,当无选中项时为-1
const Property< bool > CheckBoxes
是否在第一列显示复选框
Definition TreeView.h:258
TreeViewNode InsertItem(int index, const std::wstring &text)
在指定索引处插入新节点
virtual bool RemoveItemAt(int index) override
移除指定索引处的子项
HIMAGELIST SetImageList(TreeViewImageList imageList, HIMAGELIST value)
设置指定类型的图像列表
virtual bool InsertItem(int index, const TreeViewNode &item) override
添加子项到指定索引
virtual int GetItemsCount() override
获取子项数
TreeViewNode AddItem(const std::wstring &text)
添加新节点到根节点
virtual void SetTextColor(Color color, bool redraw) override
设置文本颜色
ImageList GetImageList(TreeViewImageList imageList)
获取指定类型的图像列表
TreeView()
初始化TreeView
virtual void OnItemChanged(NMTVITEMCHANGE *pNMInfo)
节点某些属性发生变化时调用该函数
virtual void Clear() override
清空所有子项
virtual bool UpdateItem(int index, const TreeViewNode &newValue) override
更新指定位置的子项
const ReadOnlyProperty< TreeViewNode > Root
根节点
Definition TreeView.h:248
virtual bool OnClicked(NMHDR *pNMHDR, LRESULT &result)
控件被单机时调用该函数
const ReadOnlyProperty< int > AllItemsCount
所有节点数
Definition TreeView.h:253
virtual void OnItemExpanded(NMTREEVIEWW *pNMTV)
节点展开或折叠后调用该函数
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4
TreeViewImageList
树视图的图像列表枚举
Definition TreeView.h:10
@ Normal
位图置于BmpBox左上角
@ State
包含状态图像的图像列表
颜色
Definition Color.h:16
树视图节点复选框状态改变事件参数类型
Definition TreeView.h:225
树视图节点已展开或折叠事件参数类型
Definition TreeView.h:216
树视图节点正在展开或折叠事件参数类型
Definition TreeView.h:207
表示特定类型路由事件的事件参数类型,继承自该类的类型可以直接作为AddHandler函数的模板参数
Definition RoutedEventArgs.h:21