SimpleWindow
载入中...
搜索中...
未找到
RoutedEventArgs.h
1#pragma once
2
3#include "Keys.h"
4#include "Point.h"
5#include "RoutedEvent.h"
6#include "ScrollEnums.h"
7#include "Size.h"
8#include <type_traits>
9
10namespace sw
11{
12 struct RoutedEventArgs; // RoutedEvent.h
13
14 // clang-format off
15
20 template <RoutedEventType TYPE>
25 static constexpr RoutedEventType EventType = TYPE;
26
31 };
32
36 template <typename T, typename = void>
37 struct _HasEventType : std::false_type {
38 };
39
43 template <typename T>
44 struct _HasEventType<T, decltype(void(T::EventType))> : std::true_type {
45 };
46
50 template <typename T>
53
57 struct SizeChangedEventArgs : TypedRoutedEventArgs<UIElement_SizeChanged> {
58 Size newClientSize; // 用户区的新尺寸
59 SizeChangedEventArgs(Size newClientSize) : newClientSize(newClientSize) {}
60 };
61
65 struct PositionChangedEventArgs : TypedRoutedEventArgs<UIElement_PositionChanged> {
66 Point newClientPosition; // 移动后用户区左上角的位置
67 PositionChangedEventArgs(Point newClientPosition) : newClientPosition(newClientPosition) {}
68 };
69
73 struct GotCharEventArgs : TypedRoutedEventArgs<UIElement_GotChar> {
74 wchar_t ch; // 输入的字符
75 KeyFlags flags; // 附加信息
76 GotCharEventArgs(wchar_t ch, KeyFlags flags) : ch(ch), flags(flags) {}
77 };
78
82 struct KeyDownEventArgs : TypedRoutedEventArgs<UIElement_KeyDown> {
83 VirtualKey key; // 虚拟按键
84 KeyFlags flags; // 附加信息
85 KeyDownEventArgs(VirtualKey key, KeyFlags flags) : key(key), flags(flags) {}
86 };
87
91 struct KeyUpEventArgs : TypedRoutedEventArgs<UIElement_KeyUp> {
92 VirtualKey key; // 虚拟按键
93 KeyFlags flags; // 附加信息
94 KeyUpEventArgs(VirtualKey key, KeyFlags flags) : key(key), flags(flags) {}
95 };
96
100 struct MouseMoveEventArgs : TypedRoutedEventArgs<UIElement_MouseMove> {
101 Point mousePosition; // 鼠标位置
102 MouseKey keyState; // 按键状态
103 MouseMoveEventArgs(Point mousePosition, MouseKey keyState)
104 : mousePosition(mousePosition), keyState(keyState) {}
105 };
106
110 struct MouseWheelEventArgs : TypedRoutedEventArgs<UIElement_MouseWheel> {
111 int wheelDelta; // 滚轮滚动的距离,为120的倍数
112 Point mousePosition; // 鼠标位置
113 MouseKey keyState; // 按键状态
114 MouseWheelEventArgs(int wheelDelta, Point mousePosition, MouseKey keyState)
115 : wheelDelta(wheelDelta), mousePosition(mousePosition), keyState(keyState) {}
116 };
117
121 struct MouseButtonDownEventArgs : TypedRoutedEventArgs<UIElement_MouseButtonDown> {
122 MouseKey key; // 按下的按键(左键、中间、右键)
123 Point mousePosition; // 鼠标位置
124 MouseKey keyState; // 按键状态
125 MouseButtonDownEventArgs(MouseKey key, Point mousePosition, MouseKey keyState)
126 : key(key), mousePosition(mousePosition), keyState(keyState) {}
127 };
128
132 struct MouseButtonUpEventArgs : TypedRoutedEventArgs<UIElement_MouseButtonUp> {
133 MouseKey key; // 抬起的按键(左键、中间、右键)
134 Point mousePosition; // 鼠标位置
135 MouseKey keyState; // 按键状态
136 MouseButtonUpEventArgs(MouseKey key, Point mousePosition, MouseKey keyState)
137 : key(key), mousePosition(mousePosition), keyState(keyState) {}
138 };
139
143 struct ShowContextMenuEventArgs : TypedRoutedEventArgs<UIElement_ShowContextMenu> {
144 bool cancel = false; // 是否取消显示上下文菜单
145 bool isKeyboardMsg; // 消息是否由按下快捷键(Shift+F10、VK_APPS)产生
146 Point mousePosition; // 鼠标在屏幕中的位置
147 ShowContextMenuEventArgs(bool isKeyboardMsg, Point mousePosition)
148 : isKeyboardMsg(isKeyboardMsg), mousePosition(mousePosition) {}
149 };
150
154 struct DropFilesEventArgs : TypedRoutedEventArgs<UIElement_DropFiles> {
155 HDROP hDrop; // 描述拖入文件的句柄
156 DropFilesEventArgs(HDROP hDrop) : hDrop(hDrop) {}
157 };
158
163 bool cancel = false; // 是否取消本次关闭
164 };
165
169 struct ScrollingEventArgs : TypedRoutedEventArgs<Layer_Scrolling> {
170 bool cancel = false; // 是否取消滚动条默认行为
171 ScrollOrientation scrollbar; // 滚动条类型
172 ScrollEvent event; // 滚动条事件
173 double pos; // 当event为ThumbPosition或ThubmTrack时表示当前滚动条位置,其他情况固定为0
174 ScrollingEventArgs(ScrollOrientation scrollbar, ScrollEvent event, double pos)
175 : scrollbar(scrollbar), event(event), pos(pos) {}
176 };
177
181 struct ListViewCheckStateChangedEventArgs : TypedRoutedEventArgs<ListView_CheckStateChanged> {
182 int index; // 改变项的索引
183 ListViewCheckStateChangedEventArgs(int index) : index(index) {}
184 };
185
189 struct ListViewHeaderClickedEventArgs : TypedRoutedEventArgs<ListView_HeaderClicked> {
190 int index; // 被点击列标题的索引
191 ListViewHeaderClickedEventArgs(int index) : index(index) {}
192 };
193
197 struct ListViewHeaderDoubleClickedEventArgs : TypedRoutedEventArgs<ListView_HeaderDoubleClicked> {
198 int index; // 被点击列标题的索引
199 ListViewHeaderDoubleClickedEventArgs(int index) : index(index) {}
200 };
201
205 struct ListViewItemClickedEventArgs : TypedRoutedEventArgs<ListView_ItemClicked> {
206 int row; // 被点击的行
207 int col; // 被点击的列
208 ListViewItemClickedEventArgs(int row, int col) : row(row), col(col) {}
209 };
210
214 struct ListViewItemDoubleClickedEventArgs : TypedRoutedEventArgs<ListView_ItemDoubleClicked> {
215 int row; // 被点击的行
216 int col; // 被点击的列
217 ListViewItemDoubleClickedEventArgs(int row, int col) : row(row), col(col) {}
218 };
219
224 bool cancel = false; // 是否取消文本更改,默认为false
225 int index; // 被编辑项的索引
226 wchar_t *newText; // 新的文本
227 ListViewEndEditEventArgs(int index, wchar_t *newText) : index(index), newText(newText) {}
228 };
229
233 struct DateTimePickerTimeChangedEventArgs : TypedRoutedEventArgs<DateTimePicker_TimeChanged> {
234 SYSTEMTIME time; // 时间的新值
235 DateTimePickerTimeChangedEventArgs(const SYSTEMTIME &time) : time(time) {}
236 };
237
241 struct MonthCalendarTimeChangedEventArgs : TypedRoutedEventArgs<MonthCalendar_TimeChanged> {
242 SYSTEMTIME time; // 时间的新值
243 MonthCalendarTimeChangedEventArgs(const SYSTEMTIME &time) : time(time) {}
244 };
245
250 wchar_t *id; // 被单击链接的id
251 wchar_t *url; // 被单击链接的url(即href)
252 SysLinkClickedEventArgs(wchar_t *id, wchar_t *url) : id(id), url(url) {}
253 };
254
258 struct HotKeyValueChangedEventArgs : TypedRoutedEventArgs<HotKeyControl_ValueChanged> {
259 VirtualKey key; // 按键
260 HotKeyModifier modifier; // 辅助按键
261 HotKeyValueChangedEventArgs(VirtualKey key, HotKeyModifier modifier) : key(key), modifier(modifier) {}
262 };
263
267 struct SplitButtonDropDownEventArgs : TypedRoutedEventArgs<SplitButton_DropDown> {
268 bool cancel = false; // 是否取消显示下拉菜单
269 };
270
271 // clang-format on
272}
DateTimePicker控件时间改变事件参数类型
Definition RoutedEventArgs.h:233
文件拖放事件参数类型
Definition RoutedEventArgs.h:154
输入字符事件类型参数
Definition RoutedEventArgs.h:73
热键框值改变事件参数类型
Definition RoutedEventArgs.h:258
键盘按键按下事件参数类型
Definition RoutedEventArgs.h:82
https://learn.microsoft.com/en-us/windows/win32/inputdev/about-keyboard-input#keystroke-message-flags
Definition Keys.h:12
键盘按键抬起事件参数类型
Definition RoutedEventArgs.h:91
列表视图某个复选框选中状态改变的事件参数类型
Definition RoutedEventArgs.h:181
列表视图编辑状态结束事件参数类型
Definition RoutedEventArgs.h:223
列表视图的列标题单击事件参数类型
Definition RoutedEventArgs.h:189
列表视图的列标题双击事件参数类型
Definition RoutedEventArgs.h:197
列表视图项单击事件参数类型
Definition RoutedEventArgs.h:205
列表视图项双击事件参数类型
Definition RoutedEventArgs.h:214
月历控件时间改变事件参数类型
Definition RoutedEventArgs.h:241
鼠标按键按下事件参数类型
Definition RoutedEventArgs.h:121
鼠标按键抬起事件参数类型
Definition RoutedEventArgs.h:132
鼠标移动事件参数类型
Definition RoutedEventArgs.h:100
鼠标滚轮滚动事件参数类型
Definition RoutedEventArgs.h:110
表示相对于左上角的点坐标
Definition Point.h:15
位置改变事件参数类型
Definition RoutedEventArgs.h:65
路由事件的参数
Definition RoutedEvent.h:149
窗口/面板滚动条滚动事件参数类型
Definition RoutedEventArgs.h:169
显示用户自定义上下文菜单的事件参数类型
Definition RoutedEventArgs.h:143
尺寸改变事件参数类型
Definition RoutedEventArgs.h:57
尺寸
Definition Size.h:15
分割按钮的下拉箭头单击事件参数类型
Definition RoutedEventArgs.h:267
SysLink控件链接被单击事件参数类型
Definition RoutedEventArgs.h:249
表示特定类型路由事件的事件参数类型,继承自该类的类型可以直接作为AddHandler函数的模板参数
Definition RoutedEventArgs.h:21
TypedRoutedEventArgs()
构造函数,初始化事件类型为EventType
Definition RoutedEventArgs.h:30
static constexpr RoutedEventType EventType
路由事件的类型,AddHandler模板函数使用此字段注册事件
Definition RoutedEventArgs.h:25
窗口正在关闭事件参数类型
Definition RoutedEventArgs.h:162
结构体模板,用于检测类型T是否含有名为EventType的静态字段
Definition RoutedEventArgs.h:37
结构体模板,用于检测类型T是否包含事件类型信息
Definition RoutedEventArgs.h:51