SimpleWindow
载入中...
搜索中...
未找到
ListView.h
1#pragma once
2
3#include "ImageList.h"
4#include "ItemsControl.h"
5#include "List.h"
6#include <CommCtrl.h>
7
8namespace sw
9{
13 enum class ListViewImageList {
14 Normal = LVSIL_NORMAL, // 包含大图标的图像列表
15 Small = LVSIL_SMALL, // 包含小图标的图像列表
16 State = LVSIL_STATE, // 包含状态图像的图像列表
17 GroupHeader = LVSIL_GROUPHEADER, // 组标头的图像列表
18 };
19
23 enum class ListViewColumnAlignment {
24 Left = LVCFMT_LEFT, // 左对齐
25 Right = LVCFMT_RIGHT, // 右对齐
26 Center = LVCFMT_CENTER, // 居中
27 };
28
36 std::wstring header;
37
41 double width;
42
46 ListViewColumnAlignment alignment = ListViewColumnAlignment::Left;
47
51 ListViewColumn(const std::wstring &header);
52
56 ListViewColumn(const std::wstring &header, double width);
57
61 ListViewColumn(const LVCOLUMNW &lvc);
62
66 operator LVCOLUMNW() const;
67 };
68
72 class ListView : public ItemsControl<StrList>
73 {
74 public:
79
84
89
94
99
104
109
114
115 public:
120
121 protected:
125 virtual int GetItemsCount() override;
126
130 virtual int GetSelectedIndex() override;
131
135 virtual void SetSelectedIndex(int index) override;
136
140 virtual StrList GetSelectedItem() override;
141
147 virtual void SetBackColor(Color color, bool redraw) override;
148
154 virtual void SetTextColor(Color color, bool redraw) override;
155
162 virtual bool OnNotify(NMHDR *pNMHDR, LRESULT &result) override;
163
170 virtual bool OnNotified(NMHDR *pNMHDR, LRESULT &result) override;
171
175 virtual void OnItemChanged(NMLISTVIEW *pNMLV);
176
181 virtual void OnCheckStateChanged(int index);
182
186 virtual void OnHeaderItemClicked(NMHEADERW *pNMH);
187
191 virtual void OnHeaderItemDoubleClicked(NMHEADERW *pNMH);
192
196 virtual void OnItemClicked(NMITEMACTIVATE *pNMIA);
197
201 virtual void OnItemDoubleClicked(NMITEMACTIVATE *pNMIA);
202
207 virtual void OnGetDispInfo(NMLVDISPINFOW *pNMInfo);
208
213 virtual bool OnEndEdit(NMLVDISPINFOW *pNMInfo);
214
215 public:
219 virtual void Clear() override;
220
225 virtual StrList GetItemAt(int index) override;
226
232 virtual bool AddItem(const StrList &item) override;
233
240 virtual bool InsertItem(int index, const StrList &item) override;
241
248 virtual bool UpdateItem(int index, const StrList &newValue) override;
249
255 virtual bool RemoveItemAt(int index) override;
256
263 virtual std::wstring GetItemAt(int row, int col);
264
272 virtual bool UpdateItem(int row, int col, const std::wstring &newValue);
273
279 bool AddColumn(const ListViewColumn &column);
280
286 bool AddColumn(const std::wstring &header);
287
294 bool InsertColumn(int index, const ListViewColumn &column);
295
302 bool InsertColumn(int index, const std::wstring &header);
303
309 bool SetColumnHeader(int index, const std::wstring &header);
310
316 double GetColumnWidth(int index);
317
324 bool SetColumnWidth(int index, double width);
325
331 bool RemoveColumnAt(int index);
332
337
342
346 bool GetItemCheckState(int index);
347
351 void SetItemCheckState(int index, bool value);
352
357 int GetItemIndexFromPoint(const Point &point);
358
363 ImageList GetImageList(ListViewImageList imageList);
364
371 HIMAGELIST SetImageList(ListViewImageList imageList, HIMAGELIST value);
372
379 bool SetItemImage(int index, int imgIndex);
380
386 bool EditItem(int index);
387
392
393 private:
397 int _GetRowCount();
398
402 int _GetColCount();
403
407 DWORD _GetExtendedListViewStyle();
408
413 DWORD _SetExtendedListViewStyle(DWORD style);
414 };
415};
图像列表
Definition ImageList.h:12
表示可用于呈现一组项的控件
Definition ItemsControl.h:20
列表视图
Definition ListView.h:73
const Property< bool > Editable
是否允许编辑
Definition ListView.h:113
const Property< bool > MultiSelect
是否允许多选
Definition ListView.h:88
bool InsertColumn(int index, const std::wstring &header)
添加新的列到指定索引
const ReadOnlyProperty< int > ColumnsCount
列数
Definition ListView.h:78
virtual bool OnNotify(NMHDR *pNMHDR, LRESULT &result) override
接收到WM_NOTIFY后调用该函数
virtual bool UpdateItem(int row, int col, const std::wstring &newValue)
更新指定位置处文本
virtual void SetSelectedIndex(int index) override
设置选中项索引
virtual void OnHeaderItemDoubleClicked(NMHEADERW *pNMH)
鼠标左键双击列标题时调用该函数
virtual bool InsertItem(int index, const StrList &item) override
添加子项到指定索引
double GetColumnWidth(int index)
获取指定列的宽度
virtual StrList GetItemAt(int index) override
获取指定索引处子项的值
const ReadOnlyProperty< int > TopIndex
当前列表框页面第一个子项的索引
Definition ListView.h:103
bool SetItemImage(int index, int imgIndex)
设置指定子项的图像
bool AddColumn(const std::wstring &header)
添加新的列
List< int > GetSelectedIndices()
获取所有选中项的索引
void CancelEdit()
取消编辑
virtual void SetBackColor(Color color, bool redraw) override
设置背景颜色
virtual void OnCheckStateChanged(int index)
复选框选中状态发生改变
virtual bool AddItem(const StrList &item) override
添加新的子项
virtual int GetItemsCount() override
获取子项数
virtual void OnItemClicked(NMITEMACTIVATE *pNMIA)
鼠标左键单击某一项时调用该函数
virtual int GetSelectedIndex() override
选中项的索引,当无选中项时为-1
const Property< bool > CheckBoxes
是否在第一列显示复选框
Definition ListView.h:98
virtual void OnGetDispInfo(NMLVDISPINFOW *pNMInfo)
当OnNotified接收到LVN_GETDISPINFOW通知时调用该函数
ListView()
初始化ListView
bool SetColumnWidth(int index, double width)
设置指定列的宽度
bool RemoveColumnAt(int index)
移除指定列
bool SetColumnHeader(int index, const std::wstring &header)
设置指定列的标题
virtual StrList GetSelectedItem() override
获取选中项
bool InsertColumn(int index, const ListViewColumn &column)
添加新的列到指定索引
virtual void OnItemChanged(NMLISTVIEW *pNMLV)
列表项某些属性发生变化时调用该函数
ImageList GetImageList(ListViewImageList imageList)
获取列表视图的图像列表
virtual bool RemoveItemAt(int index) override
移除指定索引处的子项
int GetItemIndexFromPoint(const Point &point)
获取指定点处子项的索引
virtual void OnItemDoubleClicked(NMITEMACTIVATE *pNMIA)
鼠标左键双击某一项调用该函数
const Property< bool > GridLines
是否显示网格线
Definition ListView.h:83
virtual bool UpdateItem(int index, const StrList &newValue) override
更新指定位置的子项
virtual void Clear() override
清空所有子项
bool AddColumn(const ListViewColumn &column)
添加新的列
bool GetItemCheckState(int index)
获取指定索引项的复选框是否选中
List< int > GetCheckedIndices()
获取所有复选框选中的项的索引
bool EditItem(int index)
进入编辑模式,调用该函数前需要将Editable属性设为true
virtual void SetTextColor(Color color, bool redraw) override
设置文本颜色
const Property< bool > ShareImageLists
允许将同一图像列表与多个列表视图控件配合使用,控件销毁时若该属性为true则不会销毁图像列表
Definition ListView.h:108
virtual bool OnNotified(NMHDR *pNMHDR, LRESULT &result) override
父窗口接收到WM_NOTIFY后且父窗口OnNotify函数返回false时调用发出通知控件的该函数
virtual bool OnEndEdit(NMLVDISPINFOW *pNMInfo)
编辑状态结束后调用该函数
const ReadOnlyProperty< int > SelectedCount
多选状态下可通过该属性获取选中项的个数
Definition ListView.h:93
virtual void OnHeaderItemClicked(NMHEADERW *pNMH)
鼠标左键单击列标题时调用该函数
HIMAGELIST SetImageList(ListViewImageList imageList, HIMAGELIST value)
设置列表视图的图像列表
virtual std::wstring GetItemAt(int row, int col)
获取指定位置处文本
void SetItemCheckState(int index, bool value)
设置指定索引项复选框的选中状态
列表类,内部维护了一个指向std::vector的智能指针
Definition List.h:27
属性
Definition Property.h:1743
只读属性
Definition Property.h:1828
颜色
Definition Color.h:16
列表视图的列信息
Definition ListView.h:32
ListViewColumnAlignment alignment
对齐方式
Definition ListView.h:46
std::wstring header
列标题
Definition ListView.h:36
ListViewColumn(const LVCOLUMNW &lvc)
从LVCOLUMNW构造
ListViewColumn(const std::wstring &header)
构造函数
ListViewColumn(const std::wstring &header, double width)
构造函数
double width
列宽度
Definition ListView.h:41
表示相对于左上角的点坐标
Definition Point.h:15