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{
17 template <RoutedEventType Type, typename TBase = RoutedEventArgs>
18 class TypedRoutedEventArgs : public TBase
19 {
20 // TBase必须派生自RoutedEventArgs
21 static_assert(
22 std::is_base_of<RoutedEventArgs, TBase>::value,
23 "TBase must be derived from RoutedEventArgs.");
24
25 public:
27 static constexpr RoutedEventType EventType = Type;
28
32 };
33
34 /*================================================================================*/
35
39 template <typename T, typename = void>
40 struct _HasEventType : std::false_type {
41 };
42
46 template <typename T>
47 struct _HasEventType<T, decltype(void(T::EventType))> : std::true_type {
48 };
49
53 template <typename T>
56
57 /*================================================================================*/
58
62 class SizeChangedEventArgs : public TypedRoutedEventArgs<UIElement_SizeChanged>
63 {
64 public:
67
73 };
74
90
94 class GotCharEventArgs : public TypedRoutedEventArgs<UIElement_GotChar>
95 {
96 public:
98 wchar_t ch;
99
102
107 {
108 }
109 };
110
115 template <RoutedEventType Type>
117 {
118 public:
121
124
131 };
132
136 class KeyDownEventArgs : public KeyEventArgs<UIElement_KeyDown>
137 {
138 public:
140 using KeyEventArgs<UIElement_KeyDown>::KeyEventArgs;
141 };
142
146 class KeyUpEventArgs : public KeyEventArgs<UIElement_KeyUp>
147 {
148 public:
150 using KeyEventArgs<UIElement_KeyUp>::KeyEventArgs;
151 };
152
157 template <RoutedEventType Type>
175
179 class MouseMoveEventArgs : public MouseEventArgs<UIElement_MouseMove>
180 {
181 public:
183 using MouseEventArgs<UIElement_MouseMove>::MouseEventArgs;
184 };
185
204
209 template <RoutedEventType Type>
225
229 class MouseButtonDownEventArgs : public MouseButtonEventArgs<UIElement_MouseButtonDown>
230 {
231 public:
233 using MouseButtonEventArgs<UIElement_MouseButtonDown>::MouseButtonEventArgs;
234 };
235
239 class MouseButtonUpEventArgs : public MouseButtonEventArgs<UIElement_MouseButtonUp>
240 {
241 public:
243 using MouseButtonEventArgs<UIElement_MouseButtonUp>::MouseButtonEventArgs;
244 };
245
250 {
251 public:
253 bool cancel = false;
254 };
255
259 class ShowContextMenuEventArgs : public TypedRoutedEventArgs<UIElement_ShowContextMenu, CancelableEventArgs>
260 {
261 public:
264
267
275 };
276
280 class DropFilesEventArgs : public TypedRoutedEventArgs<UIElement_DropFiles>
281 {
282 public:
285
291 };
292
296 class WindowClosingEventArgs : public TypedRoutedEventArgs<Window_Closing, CancelableEventArgs>
297 {
298 };
299
303 class ScrollingEventArgs : public TypedRoutedEventArgs<Layer_Scrolling, CancelableEventArgs>
304 {
305 public:
308
311
313 double pos;
314
323 };
324
330 template <RoutedEventType Type, typename TBase = RoutedEventArgs>
331 class ListViewItemEventArgs : public TypedRoutedEventArgs<Type, TBase>
332 {
333 public:
335 int index;
336
342 };
343
349 template <RoutedEventType Type, typename TBase = RoutedEventArgs>
351 {
352 public:
355
363 };
364
368 class ListViewCheckStateChangedEventArgs : public ListViewItemEventArgs<ListView_CheckStateChanged>
369 {
370 public:
372 using ListViewItemEventArgs<ListView_CheckStateChanged>::ListViewItemEventArgs;
373 };
374
378 class ListViewHeaderClickedEventArgs : public ListViewItemEventArgs<ListView_HeaderClicked>
379 {
380 public:
382 using ListViewItemEventArgs<ListView_HeaderClicked>::ListViewItemEventArgs;
383 };
384
388 class ListViewHeaderDoubleClickedEventArgs : public ListViewItemEventArgs<ListView_HeaderDoubleClicked>
389 {
390 public:
392 using ListViewItemEventArgs<ListView_HeaderDoubleClicked>::ListViewItemEventArgs;
393 };
394
398 class ListViewItemClickedEventArgs : public ListViewSubItemEventArgs<ListView_ItemClicked>
399 {
400 public:
402 using ListViewSubItemEventArgs<ListView_ItemClicked>::ListViewSubItemEventArgs;
403 };
404
408 class ListViewItemDoubleClickedEventArgs : public ListViewSubItemEventArgs<ListView_ItemDoubleClicked>
409 {
410 public:
412 using ListViewSubItemEventArgs<ListView_ItemDoubleClicked>::ListViewSubItemEventArgs;
413 };
414
418 class ListViewEndEditEventArgs : public ListViewItemEventArgs<ListView_EndEdit, CancelableEventArgs>
419 {
420 public:
422 std::wstring newText;
423
431 };
432
437 template <RoutedEventType Type>
439 {
440 public:
443
449 };
450
454 class DateTimePickerTimeChangedEventArgs : public TimeChangedEventArgs<DateTimePicker_TimeChanged>
455 {
456 public:
458 using TimeChangedEventArgs<DateTimePicker_TimeChanged>::TimeChangedEventArgs;
459 };
460
464 class MonthCalendarTimeChangedEventArgs : public TimeChangedEventArgs<MonthCalendar_TimeChanged>
465 {
466 public:
468 using TimeChangedEventArgs<MonthCalendar_TimeChanged>::TimeChangedEventArgs;
469 };
470
474 class SysLinkClickedEventArgs : public TypedRoutedEventArgs<SysLink_Clicked>
475 {
476 public:
478 std::wstring id;
479
481 std::wstring url;
482
486 SysLinkClickedEventArgs(const std::wstring &id, const std::wstring &url) : id(id), url(url)
487 {
488 }
489 };
490
510
514 class SplitButtonDropDownEventArgs : public TypedRoutedEventArgs<SplitButton_DropDown, CancelableEventArgs>
515 {
516 };
517}
可取消事件参数类型,包含一个cancel字段用于指示是否取消事件
Definition RoutedEventArgs.h:250
bool cancel
是否取消事件,默认为false
Definition RoutedEventArgs.h:253
DateTimePicker控件时间改变事件参数类型
Definition RoutedEventArgs.h:455
文件拖放事件参数类型
Definition RoutedEventArgs.h:281
DropFilesEventArgs(HDROP hDrop)
构造函数
Definition RoutedEventArgs.h:288
HDROP hDrop
描述拖入文件的句柄
Definition RoutedEventArgs.h:284
输入字符事件类型参数
Definition RoutedEventArgs.h:95
wchar_t ch
输入的字符
Definition RoutedEventArgs.h:98
KeyFlags flags
附加信息
Definition RoutedEventArgs.h:101
GotCharEventArgs(wchar_t ch, KeyFlags flags)
构造函数
Definition RoutedEventArgs.h:106
热键框值改变事件参数类型
Definition RoutedEventArgs.h:495
HotKeyModifier modifier
辅助按键
Definition RoutedEventArgs.h:501
HotKeyValueChangedEventArgs(VirtualKey key, HotKeyModifier modifier)
构造函数
Definition RoutedEventArgs.h:506
VirtualKey key
按键
Definition RoutedEventArgs.h:498
值转换器接口
Definition IValueConverter.h:14
键盘按键按下事件参数类型
Definition RoutedEventArgs.h:137
键盘事件参数类型模板
Definition RoutedEventArgs.h:117
KeyEventArgs(VirtualKey key, KeyFlags flags)
构造函数
Definition RoutedEventArgs.h:128
VirtualKey key
虚拟按键
Definition RoutedEventArgs.h:120
KeyFlags flags
附加信息
Definition RoutedEventArgs.h:123
键盘按键抬起事件参数类型
Definition RoutedEventArgs.h:147
列表视图某个复选框选中状态改变的事件参数类型
Definition RoutedEventArgs.h:369
列表视图编辑状态结束事件参数类型
Definition RoutedEventArgs.h:419
std::wstring newText
新的文本
Definition RoutedEventArgs.h:422
ListViewEndEditEventArgs(int index, const std::wstring &newText)
构造函数
Definition RoutedEventArgs.h:427
列表视图的列标题单击事件参数类型
Definition RoutedEventArgs.h:379
列表视图的列标题双击事件参数类型
Definition RoutedEventArgs.h:389
列表视图项单击事件参数类型
Definition RoutedEventArgs.h:399
列表视图项双击事件参数类型
Definition RoutedEventArgs.h:409
列表视图某个项事件参数类型模板,适用于单击、双击等事件
Definition RoutedEventArgs.h:332
ListViewItemEventArgs(int index)
构造函数
Definition RoutedEventArgs.h:339
int index
发生事件的项的索引
Definition RoutedEventArgs.h:335
列表视图某个子项事件参数类型模板,适用于单击、双击等事件
Definition RoutedEventArgs.h:351
int subIndex
发生事件的子项的索引
Definition RoutedEventArgs.h:354
ListViewSubItemEventArgs(int index, int subIndex)
构造函数
Definition RoutedEventArgs.h:359
月历控件时间改变事件参数类型
Definition RoutedEventArgs.h:465
鼠标按键按下事件参数类型
Definition RoutedEventArgs.h:230
鼠标按键事件参数类型模板
Definition RoutedEventArgs.h:211
MouseKey key
按下/抬起的按键(左键、中间、右键)
Definition RoutedEventArgs.h:214
MouseButtonEventArgs(MouseKey key, Point mousePosition, MouseKey keyState)
构造函数
Definition RoutedEventArgs.h:220
鼠标按键抬起事件参数类型
Definition RoutedEventArgs.h:240
鼠标事件参数类型模板
Definition RoutedEventArgs.h:159
MouseEventArgs(Point mousePosition, MouseKey keyState)
构造函数
Definition RoutedEventArgs.h:170
Point mousePosition
鼠标位置
Definition RoutedEventArgs.h:162
MouseKey keyState
按键状态
Definition RoutedEventArgs.h:165
鼠标移动事件参数类型
Definition RoutedEventArgs.h:180
鼠标滚轮滚动事件参数类型
Definition RoutedEventArgs.h:190
MouseWheelEventArgs(int wheelDelta, Point mousePosition, MouseKey keyState)
构造函数
Definition RoutedEventArgs.h:199
int wheelDelta
滚轮滚动的距离,为120的倍数
Definition RoutedEventArgs.h:193
位置改变事件参数类型
Definition RoutedEventArgs.h:79
PositionChangedEventArgs(Point newClientPosition)
构造函数
Definition RoutedEventArgs.h:86
Point newClientPosition
移动后用户区左上角的位置
Definition RoutedEventArgs.h:82
窗口/面板滚动条滚动事件参数类型
Definition RoutedEventArgs.h:304
double pos
当event为ThumbPosition或ThubmTrack时表示当前滚动条位置,其他情况固定为0
Definition RoutedEventArgs.h:313
ScrollOrientation scrollbar
滚动条类型
Definition RoutedEventArgs.h:307
ScrollEvent event
滚动条事件
Definition RoutedEventArgs.h:310
ScrollingEventArgs(ScrollOrientation scrollbar, ScrollEvent event, double pos)
构造函数
Definition RoutedEventArgs.h:319
显示用户自定义上下文菜单的事件参数类型
Definition RoutedEventArgs.h:260
bool isKeyboardMsg
消息是否由按下快捷键(Shift+F10、VK_APPS)产生
Definition RoutedEventArgs.h:263
ShowContextMenuEventArgs(bool isKeyboardMsg, Point mousePosition)
构造函数
Definition RoutedEventArgs.h:271
Point mousePosition
鼠标在屏幕中的位置
Definition RoutedEventArgs.h:266
尺寸改变事件参数类型
Definition RoutedEventArgs.h:63
SizeChangedEventArgs(Size newClientSize)
构造函数
Definition RoutedEventArgs.h:70
Size newClientSize
用户区的新尺寸
Definition RoutedEventArgs.h:66
分割按钮的下拉箭头单击事件参数类型
Definition RoutedEventArgs.h:515
SysLink控件链接被单击事件参数类型
Definition RoutedEventArgs.h:475
std::wstring url
被单击链接的url(即href)
Definition RoutedEventArgs.h:481
SysLinkClickedEventArgs(const std::wstring &id, const std::wstring &url)
构造函数
Definition RoutedEventArgs.h:486
std::wstring id
被单击链接的id
Definition RoutedEventArgs.h:478
时间改变事件参数类型模板,适用于DateTimePicker和MonthCalendar控件
Definition RoutedEventArgs.h:439
TimeChangedEventArgs(const SYSTEMTIME &time)
构造函数
Definition RoutedEventArgs.h:446
SYSTEMTIME time
时间的新值
Definition RoutedEventArgs.h:442
表示特定类型路由事件的事件参数类型,继承自该类的类型可以直接作为AddHandler函数的模板参数
Definition RoutedEventArgs.h:19
TypedRoutedEventArgs()
构造函数,初始化事件类型为EventType
Definition RoutedEventArgs.h:30
static constexpr RoutedEventType EventType
路由事件的类型,AddHandler模板函数使用此字段注册事件
Definition RoutedEventArgs.h:27
窗口正在关闭事件参数类型
Definition RoutedEventArgs.h:297
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4
MouseKey
鼠标事件时用于判断按键状态
Definition Keys.h:291
ScrollOrientation
滚动条方向
Definition ScrollEnums.h:10
VirtualKey
虚拟按键
Definition Keys.h:65
HotKeyModifier
表示热键框控件中的辅助按键,可以是一个或多个按键
Definition Keys.h:309
ScrollEvent
滚动条事件
Definition ScrollEnums.h:18
RoutedEventType
路由事件类型枚举
Definition RoutedEvent.h:12
@ UIElement_KeyUp
键盘按键抬起,参数类型为sw::KeyUpEventArgs
Definition RoutedEvent.h:44
@ UIElement_KeyDown
键盘按键按下,参数类型为sw::KeyDownEventArgs
Definition RoutedEvent.h:41
@ UIElement_MouseButtonUp
鼠标按键抬起,参数类型为sw::MouseButtonUpEventArgs
Definition RoutedEvent.h:59
@ DateTimePicker_TimeChanged
DateTimePicker控件的时间改变,参数类型为sw::DateTimePickerTimeChangedEventArgs
Definition RoutedEvent.h:122
@ UIElement_MouseWheel
鼠标滚轮滚动,参数类型为sw::MouseWheelEventArgs
Definition RoutedEvent.h:53
@ ListView_ItemDoubleClicked
鼠标左键单击列表视图某个项,参数类型为sw::ListViewItemDoubleClickedEventArgs
Definition RoutedEvent.h:104
@ MonthCalendar_TimeChanged
月历控件的时间改变,参数类型为sw::MonthCalendarTimeChangedEventArgs
Definition RoutedEvent.h:125
@ UIElement_MouseButtonDown
鼠标按键按下,参数类型为sw::MouseButtonDownEventArgs
Definition RoutedEvent.h:56
@ ListView_HeaderClicked
鼠标左键单击列表视图的列标题,参数类型为sw::ListViewHeaderClickedEventArgs
Definition RoutedEvent.h:95
@ ListView_EndEdit
编辑状态结束,参数类型为sw::ListViewEndEditEventArgs
Definition RoutedEvent.h:107
@ ListView_ItemClicked
鼠标左键单击列表视图某个项,参数类型为sw::ListViewItemClickedEventArgs
Definition RoutedEvent.h:101
@ ListView_CheckStateChanged
列表视图某个复选框的选中状态改变,参数类型为sw::ListViewCheckStateChangedEventArgs
Definition RoutedEvent.h:92
@ ListView_HeaderDoubleClicked
鼠标左键双击列表视图的列标题,参数类型为sw::ListViewHeaderDoubleClickedEventArgs
Definition RoutedEvent.h:98
@ UIElement_MouseMove
鼠标移动,参数类型为sw::MouseMoveEventArgs
Definition RoutedEvent.h:47
https://learn.microsoft.com/en-us/windows/win32/inputdev/about-keyboard-input#keystroke-message-flags
Definition Keys.h:12
表示相对于左上角的点坐标
Definition Point.h:15
路由事件的参数
Definition RoutedEvent.h:157
RoutedEventType eventType
事件类型
Definition RoutedEvent.h:161
尺寸
Definition Size.h:15
结构体模板,用于检测类型T是否含有名为EventType的静态字段
Definition RoutedEventArgs.h:40
结构体模板,用于检测类型T是否包含事件类型信息
Definition RoutedEventArgs.h:54