soui 5.0.0.1
Soui5 Doc
 
Loading...
Searching...
No Matches
SEvents.h
Go to the documentation of this file.
1/**
2 * @file SEvents.h
3 * @brief SOUI系统中使用的事件系统
4 * @version v1.0
5 * @author SOUI group
6 * @date 2014/08/02
7 *
8 * @details 定义了SOUI系统中使用的各种事件及其处理机制。
9 */
10
11#ifndef __SEVENTS__H__
12#define __SEVENTS__H__
13
14#include <interface/SEvtArgs-i.h>
15#include <interface/sstring-i.h>
16
17#ifdef __cplusplus
18#include <sobject/Sobject.hpp>
19#include <helper/obj-ref-impl.hpp>
20#endif
21
22SNSBEGIN
23
24typedef struct IWindow IWindow;
25
26/**
27 * @enum _SOUI_EVENTS
28 * @brief 定义了SOUI系统中的事件ID
29 */
30typedef enum _SOUI_EVENTS
31{
32 EVT_INIT = 8000, ///< 初始化事件
33 EVT_EXIT, ///< 退出事件
34 EVT_TIMER, ///< 定时器事件
35 EVT_GET_CARET, ///< 获取光标事件
36
37 // 基本窗口事件
38 EVT_SETFOCUS = 8100, ///< 设置焦点事件
39 EVT_KILLFOCUS, ///< 杀死焦点事件
40 EVT_CREATE, ///< 创建事件
41 EVT_INIT_FINISH, ///< 初始化完成事件
42 EVT_DESTROY, ///< 销毁事件
43 EVT_SIZE, ///< 大小改变事件
44 EVT_VISIBLECHANGED, ///< 可见性改变事件
45 EVT_STATECHANGED, ///< 状态改变事件
46 EVT_CAPTURECHANGED, ///< 捕获改变事件
47 EVT_MOUSE_CLICK, ///< 鼠标点击事件
48 EVT_UPDATE_TOOLTIP, ///< 更新工具提示事件
49 EVT_ANIMATION_START, ///< 动画开始事件
50 EVT_ANIMATION_STOP, ///< 动画停止事件
51 EVT_ANIMATION_REPEAT, ///< 动画重复事件
52 EVT_POS, ///< 位置改变事件
53
54 EVT_KEYDOWN = 8200, ///< 键盘按下事件
55
56 // 两个窗口鼠标状态事件
57 EVT_MOUSE_HOVER = 9000, ///< 鼠标悬停事件
58 EVT_MOUSE_LEAVE, ///< 鼠标离开事件
59
60 EVT_CMD = 10000, ///< 命令事件
61 EVT_MENU_CMD, ///< 菜单命令事件
62 EVT_CTXMENU, ///< 上下文菜单事件
63
64 // 增加两个滚动VIEW的事件
65 EVT_SCROLLVIEW_ORIGINCHANGED, ///< 滚动视图原点改变事件
66 EVT_SCROLLVIEW_SIZECHANGED, ///< 滚动视图大小改变事件
67
68 EVT_SCROLL, ///< 滚动事件
69 EVT_OFEVENT, ///< 消息二次包装事件
70 EVT_OFPANEL, ///< 面板中的消息二次包装事件
71
72 // 增加4个itempanel相关的事件,经过EVT_OFPANEL到达应用层
73 EVT_ITEMPANEL_CLICK, ///< 面板点击事件
74 EVT_ITEMPANEL_RCLICK, ///< 面板右键点击事件
75 EVT_ITEMPANEL_CLICK_UP, ///< 面板点击释放事件
76 EVT_ITEMPANEL_RCLICK_UP, ///< 面板右键点击释放事件
77 EVT_ITEMPANEL_DBCLICK, ///< 面板双击事件
78 EVT_ITEMPANEL_HOVER, ///< 面板悬停事件
79 EVT_ITEMPANEL_LEAVE, ///< 面板离开事件
80
81 EVT_RADIOGROUP_CHECK_CHANGED = 10100, ///< 单选按钮组选中状态改变事件
82
83 EVT_TAB_SELCHANGING = 11000, ///< 选项卡选择改变中事件
84 EVT_TAB_SELCHANGED, ///< 选项卡选择改变事件
85 EVT_TAB_ITEMHOVER, ///< 选项卡项悬停事件
86 EVT_TAB_ITEMLEAVE, ///< 选项卡项离开事件
87
88 EVT_LB_SELCHANGING = 12000, ///< 列表框选择改变中事件
89 EVT_LB_SELCHANGED, ///< 列表框选择改变事件
90 EVT_LB_DBCLICK, ///< 列表框双击事件
91
92 EVT_LC_SELCHANGING = 13000, ///< 列表控件选择改变中事件
93 EVT_LC_SELCHANGED, ///< 列表控件选择改变事件
94 EVT_LC_ITEMDELETED, ///< 列表控件项删除事件
95 EVT_LC_DBCLICK, ///< 列表控件双击事件
96
97 EVT_TV_SELCHANGING = 14000, ///< 树控件选择改变中事件
98 EVT_TV_SELCHANGED, ///< 树控件选择改变事件
99
100 EVT_TC_SELCHANGING = 15000, ///< 树形控件选择改变中事件
101 EVT_TC_SELCHANGED, ///< 树形控件选择改变事件
102 EVT_TC_EXPAND, ///< 树形控件展开事件
103 EVT_TC_CHECKSTATE, ///< 树形控件检查状态改变事件
104 EVT_TC_DBCLICK, ///< 树形控件双击事件
105 EVT_CB_BEFORE_CLOSEUP, ///< 组合框关闭前事件
106
107 EVT_LV_SELCHANGING = 15100, ///< 列表视图选择改变中事件
108 EVT_LV_SELCHANGED, ///< 列表视图选择改变事件
109 EVT_LV_ITEMCLICK, ///< 列表视图项点击事件
110
111 EVT_RE_NOTIFY = 16000, ///< 丰富编辑控件通知事件
112 EVT_RE_MENU, ///< 丰富编辑控件菜单事件
113
114 EVT_SLIDER_POS = 17000, ///< 滑块位置改变事件
115 EVT_SLIDER_VALUETIP, ///< 滑块值提示事件
116
117 EVT_HEADER_CLICK = 18000, ///< 表头点击事件
118 EVT_HEADER_ITEMCHANGING, ///< 表头项改变中事件
119 EVT_HEADER_ITEMCHANGED, ///< 表头项改变事件
120 EVT_HEADER_ITEMSWAP, ///< 表头项交换事件
121 EVT_HEADER_RELAYOUT, ///< 表头重新布局事件
122
123 EVT_CB_SELCHANGE = 19000, ///< 组合框选择改变事件
124 EVT_CB_DROPDOWN, ///< 组合框下拉事件
125
126 EVT_CALENDAR_SELDAY = 20000, ///< 日历选择日期事件
127 EVT_CALENDAR_SETDATE, ///< 日历设置日期事件
128 EVT_CALENDAREX_CHANGED, ///< 扩展日历改变事件
129 EVT_DATETIME_CHANGED, ///< 日期时间改变事件
130
131 EVT_SPIN_VALUE2STRING = 21000, ///< 旋转框值转字符串事件
132
133 EVT_SPLIT_PANE_MOVED = 22000, ///< 分割窗格移动事件
134
135 EVT_HOT_KEY_SET = 23000, ///< 热键设置事件
136
137 // 图片动画开始,结束事件
138 EVT_IMAGE_ANI_START = 22100, ///< 图片动画开始事件
139 EVT_IMAGE_ANI_STOP, ///< 图片动画停止事件
140 EVT_IMAGE_ANI_REPEAT, ///< 图片动画重复事件
141
142 EVT_SELECTMENU = 22150, ///< 菜单项选择事件
143 EVT_POPMENU, ///< 弹出菜单事件
144
145 EVT_REALWND_CREATE = 22160, ///< 真实窗口创建事件
146 EVT_REALWND_DESTROY, ///< 真实窗口销毁事件
147 EVT_REALWND_INIT, ///< 真实窗口初始化事件
148 EVT_REALWND_POSITION, ///< 真实窗口位置改变事件
149
150 EVT_EXTERNAL_BEGIN = 10000000, ///< 外部事件开始ID
151} SOUI_EVENTS;
152
153/**
154 * @enum _MouseClickId
155 * @brief 定义了鼠标点击类型
156 */
157typedef enum _MouseClickId
158{
159 MOUSE_LBTN_DOWN = 0, ///< 左键按下
160 MOUSE_LBTN_UP, ///< 左键释放
161 MOUSE_LBTN_DBCLICK, ///< 左键双击
162 MOUSE_RBTN_DOWN, ///< 右键按下
163 MOUSE_RBTN_UP, ///< 右键释放
164 MOUSE_RBTN_DBCLICK, ///< 右键双击
165 MOUSE_MBTN_DOWN, ///< 中键按下
166 MOUSE_MBTN_UP, ///< 中键释放
167 MOUSE_MBTN_DBCLICK, ///< 中键双击
168} MouseClickId;
169
170#ifdef __cplusplus
171/**
172 * @class SEvtArgs
173 * @brief 事件参数基类
174 */
175class SOUI_EXP SEvtArgs : public TObjRefImpl<SObjectImpl<IEvtArgs>> {
176 DEF_SOBJECT(SObjectImpl<IEvtArgs>, L"event")
177
178 public:
179 UINT handled; ///< 处理计数
180 BOOL bubbleUp; ///< 是否冒泡
181 int idFrom; ///< 发送者ID
182 LPCWSTR nameFrom; ///< 发送者名称
183 IObject *sender; ///< 发送者对象
184
185 /**
186 * @brief 获取发送者对象
187 * @return 发送者对象指针
188 */
189 STDMETHOD_(IObject *, Sender)(THIS)
190 {
191 return sender;
192 }
193
194 /**
195 * @brief 获取发送者ID
196 * @return 发送者ID
197 */
198 STDMETHOD_(int, IdFrom)(THIS) SCONST
199 {
200 return idFrom;
201 }
202
203 /**
204 * @brief 设置发送者ID
205 * @param id 发送者ID
206 */
207 STDMETHOD_(void, SetIdFrom)(THIS_ int id)
208 {
209 idFrom = id;
210 }
211
212 /**
213 * @brief 获取发送者名称
214 * @return 发送者名称
215 */
216 STDMETHOD_(LPCWSTR, NameFrom)(THIS) SCONST
217 {
218 return nameFrom;
219 }
220
221 /**
222 * @brief 设置发送者名称
223 * @param name 发送者名称
224 */
225 STDMETHOD_(void, SetNameFrom)(THIS_ LPCWSTR name)
226 {
227 nameFrom = name;
228 }
229
230 /**
231 * @brief 检查事件是否冒泡
232 * @return TRUE if 冒泡,FALSE otherwise
233 */
234 STDMETHOD_(BOOL, IsBubbleUp)(THIS) SCONST
235 {
236 return bubbleUp;
237 }
238
239 /**
240 * @brief 设置事件是否冒泡
241 * @param bSet 是否冒泡
242 */
243 STDMETHOD_(void, SetBubbleUp)(THIS_ BOOL bSet)
244 {
245 bubbleUp = bSet;
246 }
247
248 /**
249 * @brief 获取处理计数
250 * @return 处理计数
251 */
252 STDMETHOD_(UINT, HandleCount)(THIS) SCONST
253 {
254 return handled;
255 }
256
257 /**
258 * @brief 增加处理计数
259 */
260 STDMETHOD_(void, IncreaseHandleCount)(THIS)
261 {
262 handled++;
263 }
264
265 /**
266 * @brief 获取事件数据
267 * @return 事件数据指针
268 */
269 STDMETHOD_(LPVOID, Data)(THIS)
270 {
271 return NULL;
272 }
273
274 public:
275 /**
276 * @brief 构造函数
277 * @param pSender 发送者对象
278 */
279 SEvtArgs(IObject *pSender)
280 : handled(0)
281 , sender(pSender)
282 , bubbleUp(true)
283 {
284 if (NULL != sender)
285 {
286 idFrom = sender->GetID();
287 nameFrom = sender->GetName();
288 sender->AddRef();
289 }
290 else
291 {
292 idFrom = 0;
293 nameFrom = NULL;
294 }
295 }
296
297 /**
298 * @brief 析构函数
299 */
300 virtual ~SEvtArgs()
301 {
302 if (sender)
303 {
304 sender->Release();
305 sender = NULL;
306 }
307 }
308};
309
310// 定义一组事件定义的宏,简化事件的定义。
311#define DEF_EVT_CLASS(evt, id, evt_name, evtData, api) \
312 class api evt \
313 : public SEvtArgs \
314 , public evtData { \
315 DEF_SOBJECT(SEvtArgs, WIDESTR(evt_name)) \
316 public: \
317 STDMETHOD_(int, GetID)(THIS) const \
318 { \
319 return evt::EventID; \
320 } \
321 STDMETHOD_(LPCWSTR, GetName)(THIS) const \
322 { \
323 return evt::GetClassName(); \
324 } \
325 STDMETHOD_(LPVOID, Data)(THIS) \
326 { \
327 return (evtData *)this; \
328 } \
329 enum \
330 { \
331 EventID = id \
332 }; \
333 evt(SNS::IObject *pSender = NULL) \
334 : SEvtArgs(pSender) \
335 { \
336 } \
337 };
338
339#define EVENTID(x) x::EventID, x::GetClassName()
340
341#endif // __cplusplus
342
343#define DEF_EVT_STRUCT(n, x) typedef struct n x n;
344
345#ifdef __cplusplus
346#define DEF_EVENT(evt, id, name, x, api) \
347 DEF_EVT_STRUCT(St##evt, x) \
348 DEF_EVT_CLASS(evt, id, name, St##evt, api)
349#else
350#define DEF_EVENT(evt, id, name, x, api) DEF_EVT_STRUCT(St##evt, x)
351#endif // __cplusplus
352
353#define DEF_EVT(evt, id, name, x) DEF_EVENT(evt, id, name, x, SOUI_EXP)
354#define DEF_EVT_EXT(evt, id, x) DEF_EVENT(evt, id, on_##evt, x, )
355
356DEF_EVT(EventInit, EVT_INIT, on_init, { int fake; })
357
358DEF_EVT(EventExit, EVT_EXIT, on_exit, { int fake; })
359
360DEF_EVT(EventTimer, EVT_TIMER, on_timer, {
361 UINT uID; ///< 定时器ID
362 LPARAM uData; ///< 定时器数据
363})
364
365DEF_EVT(EventGetCaret, EVT_GET_CARET, on_get_caret, { IStringW *strCaret; })
366
367DEF_EVT(EventScroll, EVT_SCROLL, on_scroll, {
368 int nSbCode; ///< 滚动条代码
369 int nPos; ///< 滚动条位置
370 BOOL bVertical; ///< 是否垂直滚动条
371})
372
373DEF_EVT(EventSpinValue2String, EVT_SPIN_VALUE2STRING, on_spin_valuetostring, {
374 BOOL bInit; ///< 是否初始化
375 int nValue; ///< 旋转框值
376 IStringT *strValue; ///< 字符串值
377})
378
379DEF_EVT(EventSwndCreate, EVT_CREATE, on_create, { int fake; })
380DEF_EVT(EventSwndInitFinish, EVT_INIT_FINISH, on_init_finish, { int fake; })
381DEF_EVT(EventSwndDestroy, EVT_DESTROY, on_destroy, { int fake; })
382
383DEF_EVT(EventSwndSize, EVT_SIZE, on_size, { SIZE szWnd; })
384DEF_EVT(EventSwndPos, EVT_POS, on_pos, { RECT rcWnd; })
385
386DEF_EVT(EventSwndStateChanged, EVT_STATECHANGED, on_state_changed, {
387 DWORD dwOldState; ///< 旧状态
388 DWORD dwNewState; ///< 新状态
389})
390
391#ifdef __cplusplus
392/**
393 * @brief 检查状态是否改变
394 * @param pEvt 状态改变事件指针
395 * @param dwState 状态
396 * @return TRUE if 状态改变,FALSE otherwise
397 */
398inline BOOL EventSwndStateChanged_CheckState(EventSwndStateChanged *pEvt, DWORD dwState)
399{
400 return (pEvt->dwOldState & dwState) != (pEvt->dwNewState & dwState);
401}
402#endif
403
404DEF_EVT(EventSwndCaptureChanged, EVT_CAPTURECHANGED, on_capture_changed, { BOOL bCaptured; })
405
406DEF_EVT(EventSwndVisibleChanged, EVT_VISIBLECHANGED, on_visible_changed, { BOOL bVisible; })
407
408DEF_EVT(EventSwndAnimationStart, EVT_ANIMATION_START, on_animation_start, { IAnimation *pAni; })
409
410DEF_EVT(EventSwndAnimationStop, EVT_ANIMATION_STOP, on_animation_stop, { IAnimation *pAni; })
411DEF_EVT(EventSwndAnimationRepeat, EVT_ANIMATION_REPEAT, on_animation_repeat, { IAnimation *pAni; })
412
413DEF_EVT(EventKeyDown, EVT_KEYDOWN, on_key_down, {
414 UINT nChar; ///< 字符码
415 UINT nFlags; ///< 标志
416 BOOL bCancel; ///< 是否取消
417})
418
419DEF_EVT(EventSwndMouseLeave, EVT_MOUSE_LEAVE, on_mouse_leave, { int fake; })
420
421DEF_EVT(EventSwndMouseHover, EVT_MOUSE_HOVER, on_mouse_hover, { int fake; })
422
423DEF_EVT(EventSwndUpdateTooltip, EVT_UPDATE_TOOLTIP, on_update_tooltip, {
424 IStringT *strToolTip; ///< 工具提示字符串
425 BOOL bUpdated; ///< 是否更新
426})
427
428DEF_EVT(EventRadioGroupCheckChanged, EVT_RADIOGROUP_CHECK_CHANGED, on_radiogroup_check_changed, { IWindow *pChecked; })
429
430DEF_EVT(EventItemPanelRclick, EVT_ITEMPANEL_RCLICK, on_itemparem_rclick, {
431 WPARAM wParam; ///< WPARAM参数
432 LPARAM lParam; ///< LPARAM参数
433})
434
435DEF_EVT(EventItemPanelDbclick, EVT_ITEMPANEL_DBCLICK, on_itempanel_dbclick, {
436 WPARAM wParam; ///< WPARAM参数
437 LPARAM lParam; ///< LPARAM参数
438})
439
440DEF_EVT(EventItemPanelClick, EVT_ITEMPANEL_CLICK, on_itempanel_click, {
441 WPARAM wParam; ///< WPARAM参数
442 LPARAM lParam; ///< LPARAM参数
443})
444
445DEF_EVT(EventItemPanelRclickUp, EVT_ITEMPANEL_RCLICK_UP, on_itemparem_rclick_up, {
446 WPARAM wParam; ///< WPARAM参数
447 LPARAM lParam; ///< LPARAM参数
448})
449
450DEF_EVT(EventItemPanelClickUp, EVT_ITEMPANEL_CLICK_UP, on_itempanel_click_up, {
451 WPARAM wParam; ///< WPARAM参数
452 LPARAM lParam; ///< LPARAM参数
453})
454
455DEF_EVT(EventItemPanelHover, EVT_ITEMPANEL_HOVER, on_itempanel_hover, {
456 WPARAM wParam; ///< WPARAM参数
457 LPARAM lParam; ///< LPARAM参数
458})
459
460// 注:在EventItemPanelLeave中从IItemPanel中通过GetItemIndex获取表项索引时需要检查索引有效性。
461DEF_EVT(EventItemPanelLeave, EVT_ITEMPANEL_LEAVE, on_itempanel_leave, { int fake; })
462
463DEF_EVT(EventMouseClick, EVT_MOUSE_CLICK, on_mouse_click, {
464 POINT pt; ///< 鼠标点击位置
465 UINT uFlags; ///< 鼠标点击标志
466 MouseClickId clickId; ///< 鼠标点击类型
467 BOOL bHover; ///< 是否悬停
468})
469
470DEF_EVT(EventCmd, EVT_CMD, on_command, { int fake; })
471
472DEF_EVT(EventMenuCmd, EVT_MENU_CMD, on_menu_command, { int menuId; })
473
474DEF_EVT(EventCtxMenu, EVT_CTXMENU, on_conext_menu, {
475 POINT pt; ///< 上下文菜单位置
476 BOOL bCancel; ///< 是否取消
477})
478
479DEF_EVT(EventSetFocus, EVT_SETFOCUS, on_set_focus, { SWND wndOld; })
480
481DEF_EVT(EventKillFocus, EVT_KILLFOCUS, on_kill_focus, { SWND wndFocus; })
482
483DEF_EVT(EventScrollViewOriginChanged, EVT_SCROLLVIEW_ORIGINCHANGED, on_scrollview_origin_changed, {
484 POINT ptOldOrigin; ///< 旧原点位置
485 POINT ptNewOrigin; ///< 新原点位置
486})
487
488DEF_EVT(EventScrollViewSizeChanged, EVT_SCROLLVIEW_SIZECHANGED, on_scrollview_size_changed, {
489 SIZE szOldViewSize; ///< 旧视图大小
490 SIZE szNewViewSize; ///< 新视图大小
491})
492
493DEF_EVT(EventOfEvent, EVT_OFEVENT, on_event_of_event, { IEvtArgs *pOrgEvt; })
494
495DEF_EVT(EventOfPanel, EVT_OFPANEL, on_event_of_panel, {
496 IWindow *pPanel; ///< 面板对象
497 IEvtArgs *pOrgEvt; ///< 原始事件参数
498})
499
500DEF_EVT(EventTabSelChanging, EVT_TAB_SELCHANGING, on_tab_sel_changing, {
501 UINT uOldSel; ///< 旧选中项
502 UINT uNewSel; ///< 新选中项
503 BOOL bCancel; ///< 是否取消
504})
505
506DEF_EVT(EventTabSelChanged, EVT_TAB_SELCHANGED, on_tab_sel_changed, {
507 UINT uOldSel; ///< 旧选中项
508 UINT uNewSel; ///< 新选中项
509})
510
511DEF_EVT(EventTabItemHover, EVT_TAB_ITEMHOVER, on_tab_item_hover, { int iHover; })
512
513DEF_EVT(EventTabItemLeave, EVT_TAB_ITEMLEAVE, on_tab_item_leave, { int iLeave; })
514
515DEF_EVT(EventLBSelChanging, EVT_LB_SELCHANGING, on_listbox_sel_changing, {
516 int nNewSel; ///< 新选中项
517 int nOldSel; ///< 旧选中项
518 BOOL bCancel; ///< 是否取消
519})
520
521DEF_EVT(EventLBSelChanged, EVT_LB_SELCHANGED, on_listbox_sel_changed, {
522 int nNewSel; ///< 新选中项
523 int nOldSel; ///< 旧选中项
524})
525
526DEF_EVT(EventLBDbClick, EVT_LB_DBCLICK, on_listbox_item_dbclick, { int nCurSel; })
527
528DEF_EVT(EventLVSelChanged, EVT_LV_SELCHANGED, on_listview_select_changed, {
529 int iOldSel; ///< 原选中项
530 int iNewSel; ///< 新选中项
531})
532
533DEF_EVT(EventLVSelChanging, EVT_LV_SELCHANGING, on_listview_select_changing, {
534 int iOldSel; ///< 原选中项
535 int iNewSel; ///< 新选中项
536 BOOL bCancel; ///< 是否取消
537})
538
539DEF_EVT(EventTVSelChanged, EVT_TV_SELCHANGED, on_treeview_select_changed, {
540 ULONG_PTR hOldSel; ///< 原选中项
541 ULONG_PTR hNewSel; ///< 新选中项
542})
543
544DEF_EVT(EventTVSelChanging, EVT_TV_SELCHANGING, on_treeview_select_changing, {
545 ULONG_PTR hOldSel; ///< 原选中项
546 ULONG_PTR hNewSel; ///< 新选中项
547 BOOL bCancel; ///< 是否取消
548})
549
550DEF_EVT(EventRENotify, EVT_RE_NOTIFY, on_richedit_notify, {
551 DWORD iNotify; ///< 通知码
552 LPVOID pv; ///< 通知数据
553 HRESULT hr; ///< 返回结果
554})
555
556DEF_EVT(EventREMenu, EVT_RE_MENU, on_richedit_menu, { UINT uCmd; })
557
558typedef enum _SliderBarAction
559{
560 SBA_MOUSE_DOWN = 0,
561 SBA_MOUSE_MOVING,
562 SBA_MOUSE_UP
563} SliderBarAction;
564
565DEF_EVT(EventSliderPos, EVT_SLIDER_POS, on_slider_pos, {
566 int nPos; ///< 滑块位置
567 SliderBarAction action; ///< 滑块动作
568})
569
570DEF_EVT(EventSliderValueTip, EVT_SLIDER_VALUETIP, on_slider_valuetip, {
571 int nPos; ///< 滑块位置
572 IStringT *buf; ///< 值提示字符串
573})
574
575// 点击表头
576DEF_EVT(EventHeaderClick, EVT_HEADER_CLICK, on_header_click, { int iItem; })
577
578// 表头宽度改变中
579DEF_EVT(EventHeaderItemChanging, EVT_HEADER_ITEMCHANGING, on_header_item_changing, {
580 int iItem; ///< 表头项索引
581 int nWidth; ///< 新宽度
582})
583
584// 表头宽度改变
585DEF_EVT(EventHeaderItemChanged, EVT_HEADER_ITEMCHANGED, on_header_item_changed, {
586 int iItem; ///< 表头项索引
587 int nWidth; ///< 新宽度
588})
589
590// 拖动表项调整位置
591DEF_EVT(EventHeaderItemSwap, EVT_HEADER_ITEMSWAP, on_header_item_swap, {
592 int iOldIndex; ///< 旧索引
593 int iNewIndex; ///< 新索引
594})
595
596DEF_EVT(EventHeaderRelayout, EVT_HEADER_RELAYOUT, on_header_relayout, { int fake; })
597
598DEF_EVT(EventCBSelChange, EVT_CB_SELCHANGE, on_combobox_sel_change, { int nCurSel; })
599
600DEF_EVT(EventCBDropdown, EVT_CB_DROPDOWN, on_combobox_dropdown, {
601 void *pDropDown; ///< 下拉对象
602 const IStringT *strInput; ///< 输入字符串
603})
604
605DEF_EVT(EventCBBeforeCloseUp, EVT_CB_BEFORE_CLOSEUP, on_combobox_before_closeup, { BOOL bCloseBlock; })
606
607DEF_EVT(EventLCSelChanging, EVT_LC_SELCHANGING, on_listctrl_sel_changing, {
608 int nNewSel; ///< 新选中项
609 int nOldSel; ///< 旧选中项
610 BOOL bCancel; ///< 是否取消
611})
612
613DEF_EVT(EventLCSelChanged, EVT_LC_SELCHANGED, on_listctrl_sel_changed, {
614 int nNewSel; ///< 新选中项
615 int nOldSel; ///< 旧选中项
616})
617
618DEF_EVT(EventLCDbClick, EVT_LC_DBCLICK, on_listctrl_item_dbclick, { int nCurSel; })
619
620DEF_EVT(EventLCItemDeleted, EVT_LC_ITEMDELETED, on_listctrl_del_item, {
621 int nItem; ///< 项索引
622 LPARAM dwData; ///< 项数据
623})
624
625DEF_EVT(EventCalendarSelDay, EVT_CALENDAR_SELDAY, on_calendar_sel_day, {
626 WORD wOldDay; ///< 旧选中日
627 WORD wNewDay; ///< 新选中日
628})
629
630DEF_EVT(EventCalendarSetDate, EVT_CALENDAR_SETDATE, on_calendar_set_date, { int fake; })
631
632DEF_EVT(EventCalendarExChanged, EVT_CALENDAREX_CHANGED, on_calendarex_changed, {
633 WORD iNewDay; ///< 新日
634 WORD iNewMonth; ///< 新月
635 WORD iNewYear; ///< 新年
636 int nBtnType; ///< 按钮类型
637})
638
639DEF_EVT(EventDateTimeChanged, EVT_DATETIME_CHANGED, on_datetime_changed, { SYSTEMTIME newTime; })
640
641DEF_EVT(EventTCSelChanging, EVT_TC_SELCHANGING, on_treectrl_sel_changing, {
642 HSTREEITEM hOldSel; ///< 旧选中项
643 HSTREEITEM hNewSel; ///< 新选中项
644 BOOL bCancel; ///< 是否取消
645})
646
647DEF_EVT(EventTCSelChanged, EVT_TC_SELCHANGED, on_treectrl_sel_changed, {
648 HSTREEITEM hOldSel; ///< 旧选中项
649 HSTREEITEM hNewSel; ///< 新选中项
650})
651
652DEF_EVT(EventTCCheckState, EVT_TC_CHECKSTATE, on_treectrl_item_check, {
653 HSTREEITEM hItem; ///< 项句柄
654 UINT uCheckState; ///< 检查状态
655})
656
657DEF_EVT(EventTCExpand, EVT_TC_EXPAND, on_treectrl_item_expand, {
658 HSTREEITEM hItem; ///< 项句柄
659 BOOL bCollapsed; ///< 是否折叠
660})
661
662// 双击treectrl的叶子节点 add by zhaosheng
663DEF_EVT(EventTCDbClick, EVT_TC_DBCLICK, on_treectrl_item_dbclick, {
664 HSTREEITEM hItem; ///< 双击选中的节点
665 BOOL bCancel; ///< 是否取消
666})
667
668DEF_EVT(EventSplitPaneMoved, EVT_SPLIT_PANE_MOVED, on_split_pane_moved, { RECT rcPane; })
669
670DEF_EVT(EventImageAnimateStart, EVT_IMAGE_ANI_START, on_image_animate_start, { int fake; })
671
672DEF_EVT(EventImageAnimateStop, EVT_IMAGE_ANI_STOP, on_image_animate_stop, { int fake; })
673
674DEF_EVT(EventImageAnimateRepeat, EVT_IMAGE_ANI_REPEAT, on_image_animate_repeat, { int fake; })
675
676DEF_EVT(EventSelectMenu, EVT_SELECTMENU, on_select_menu, {
677 UINT nMenuId; ///< 菜单项ID
678 void *pMenu; ///< 菜单对象
679})
680
681DEF_EVT(EventPopMenu, EVT_POPMENU, on_pop_menu, {
682 UINT nMenuIndex; ///< 菜单索引
683 void *pMenu; ///< 菜单对象
684})
685
686DEF_EVT(EventSetHotKey, EVT_HOT_KEY_SET, on_hot_key_set_event, {
687 WORD vKey; ///< 虚拟键码
688 WORD wModifiers; ///< 修饰键
689})
690
691DEF_EVT(EventRealWndCreate, EVT_REALWND_CREATE, on_real_wnd_create, { HWND hRet; })
692
693DEF_EVT(EventRealWndDestroy, EVT_REALWND_DESTROY, on_real_wnd_destroy, { int fake; })
694
695DEF_EVT(EventRealWndInit, EVT_REALWND_INIT, on_real_wnd_init, { BOOL bRet; })
696
697DEF_EVT(EventRealWndPosition, EVT_REALWND_POSITION, on_real_wnd_position, {
698 RECT rc; ///< 窗口位置矩形
699 BOOL bRet; ///< 返回值
700})
701SNSEND
702
703#endif // __SEVENTS__H__
_MouseClickId
定义了鼠标点击类型
Definition SEvents.h:158
@ MOUSE_LBTN_DOWN
左键按下
Definition SEvents.h:159
@ MOUSE_RBTN_DBCLICK
右键双击
Definition SEvents.h:164
@ MOUSE_LBTN_UP
左键释放
Definition SEvents.h:160
@ MOUSE_MBTN_DOWN
中键按下
Definition SEvents.h:165
@ MOUSE_LBTN_DBCLICK
左键双击
Definition SEvents.h:161
@ MOUSE_MBTN_UP
中键释放
Definition SEvents.h:166
@ MOUSE_RBTN_UP
右键释放
Definition SEvents.h:163
@ MOUSE_MBTN_DBCLICK
中键双击
Definition SEvents.h:167
@ MOUSE_RBTN_DOWN
右键按下
Definition SEvents.h:162
_SOUI_EVENTS
定义了SOUI系统中的事件ID
Definition SEvents.h:31
@ EVT_RE_MENU
丰富编辑控件菜单事件
Definition SEvents.h:112
@ EVT_SCROLL
滚动事件
Definition SEvents.h:68
@ EVT_ITEMPANEL_CLICK
面板点击事件
Definition SEvents.h:73
@ EVT_HEADER_ITEMCHANGING
表头项改变中事件
Definition SEvents.h:118
@ EVT_REALWND_DESTROY
真实窗口销毁事件
Definition SEvents.h:146
@ EVT_TC_SELCHANGING
树形控件选择改变中事件
Definition SEvents.h:100
@ EVT_KEYDOWN
键盘按下事件
Definition SEvents.h:54
@ EVT_EXTERNAL_BEGIN
外部事件开始ID
Definition SEvents.h:150
@ EVT_CALENDAREX_CHANGED
扩展日历改变事件
Definition SEvents.h:128
@ EVT_LB_SELCHANGED
列表框选择改变事件
Definition SEvents.h:89
@ EVT_MENU_CMD
菜单命令事件
Definition SEvents.h:61
@ EVT_CB_BEFORE_CLOSEUP
组合框关闭前事件
Definition SEvents.h:105
@ EVT_LC_SELCHANGED
列表控件选择改变事件
Definition SEvents.h:93
@ EVT_INIT_FINISH
初始化完成事件
Definition SEvents.h:41
@ EVT_SETFOCUS
设置焦点事件
Definition SEvents.h:38
@ EVT_CB_SELCHANGE
组合框选择改变事件
Definition SEvents.h:123
@ EVT_REALWND_CREATE
真实窗口创建事件
Definition SEvents.h:145
@ EVT_MOUSE_CLICK
鼠标点击事件
Definition SEvents.h:47
@ EVT_RE_NOTIFY
丰富编辑控件通知事件
Definition SEvents.h:111
@ EVT_GET_CARET
获取光标事件
Definition SEvents.h:35
@ EVT_LC_ITEMDELETED
列表控件项删除事件
Definition SEvents.h:94
@ EVT_TV_SELCHANGED
树控件选择改变事件
Definition SEvents.h:98
@ EVT_HEADER_ITEMCHANGED
表头项改变事件
Definition SEvents.h:119
@ EVT_POPMENU
弹出菜单事件
Definition SEvents.h:143
@ EVT_CREATE
创建事件
Definition SEvents.h:40
@ EVT_SPIN_VALUE2STRING
旋转框值转字符串事件
Definition SEvents.h:131
@ EVT_HEADER_CLICK
表头点击事件
Definition SEvents.h:117
@ EVT_CB_DROPDOWN
组合框下拉事件
Definition SEvents.h:124
@ EVT_SLIDER_POS
滑块位置改变事件
Definition SEvents.h:114
@ EVT_TV_SELCHANGING
树控件选择改变中事件
Definition SEvents.h:97
@ EVT_IMAGE_ANI_START
图片动画开始事件
Definition SEvents.h:138
@ EVT_HEADER_ITEMSWAP
表头项交换事件
Definition SEvents.h:120
@ EVT_INIT
初始化事件
Definition SEvents.h:32
@ EVT_MOUSE_HOVER
鼠标悬停事件
Definition SEvents.h:57
@ EVT_ANIMATION_REPEAT
动画重复事件
Definition SEvents.h:51
@ EVT_STATECHANGED
状态改变事件
Definition SEvents.h:45
@ EVT_ITEMPANEL_RCLICK
面板右键点击事件
Definition SEvents.h:74
@ EVT_HOT_KEY_SET
热键设置事件
Definition SEvents.h:135
@ EVT_ITEMPANEL_DBCLICK
面板双击事件
Definition SEvents.h:77
@ EVT_SELECTMENU
菜单项选择事件
Definition SEvents.h:142
@ EVT_ANIMATION_STOP
动画停止事件
Definition SEvents.h:50
@ EVT_TC_CHECKSTATE
树形控件检查状态改变事件
Definition SEvents.h:103
@ EVT_ITEMPANEL_RCLICK_UP
面板右键点击释放事件
Definition SEvents.h:76
@ EVT_LC_SELCHANGING
列表控件选择改变中事件
Definition SEvents.h:92
@ EVT_CAPTURECHANGED
捕获改变事件
Definition SEvents.h:46
@ EVT_REALWND_POSITION
真实窗口位置改变事件
Definition SEvents.h:148
@ EVT_OFEVENT
消息二次包装事件
Definition SEvents.h:69
@ EVT_SIZE
大小改变事件
Definition SEvents.h:43
@ EVT_LB_DBCLICK
列表框双击事件
Definition SEvents.h:90
@ EVT_IMAGE_ANI_REPEAT
图片动画重复事件
Definition SEvents.h:140
@ EVT_SCROLLVIEW_ORIGINCHANGED
滚动视图原点改变事件
Definition SEvents.h:65
@ EVT_SPLIT_PANE_MOVED
分割窗格移动事件
Definition SEvents.h:133
@ EVT_TAB_SELCHANGED
选项卡选择改变事件
Definition SEvents.h:84
@ EVT_POS
位置改变事件
Definition SEvents.h:52
@ EVT_CMD
命令事件
Definition SEvents.h:60
@ EVT_KILLFOCUS
杀死焦点事件
Definition SEvents.h:39
@ EVT_EXIT
退出事件
Definition SEvents.h:33
@ EVT_LV_SELCHANGED
列表视图选择改变事件
Definition SEvents.h:108
@ EVT_ITEMPANEL_HOVER
面板悬停事件
Definition SEvents.h:78
@ EVT_OFPANEL
面板中的消息二次包装事件
Definition SEvents.h:70
@ EVT_TC_SELCHANGED
树形控件选择改变事件
Definition SEvents.h:101
@ EVT_IMAGE_ANI_STOP
图片动画停止事件
Definition SEvents.h:139
@ EVT_REALWND_INIT
真实窗口初始化事件
Definition SEvents.h:147
@ EVT_LV_ITEMCLICK
列表视图项点击事件
Definition SEvents.h:109
@ EVT_SLIDER_VALUETIP
滑块值提示事件
Definition SEvents.h:115
@ EVT_TIMER
定时器事件
Definition SEvents.h:34
@ EVT_MOUSE_LEAVE
鼠标离开事件
Definition SEvents.h:58
@ EVT_CALENDAR_SETDATE
日历设置日期事件
Definition SEvents.h:127
@ EVT_TAB_ITEMLEAVE
选项卡项离开事件
Definition SEvents.h:86
@ EVT_TC_EXPAND
树形控件展开事件
Definition SEvents.h:102
@ EVT_RADIOGROUP_CHECK_CHANGED
单选按钮组选中状态改变事件
Definition SEvents.h:81
@ EVT_ITEMPANEL_CLICK_UP
面板点击释放事件
Definition SEvents.h:75
@ EVT_ANIMATION_START
动画开始事件
Definition SEvents.h:49
@ EVT_TAB_SELCHANGING
选项卡选择改变中事件
Definition SEvents.h:83
@ EVT_LC_DBCLICK
列表控件双击事件
Definition SEvents.h:95
@ EVT_TAB_ITEMHOVER
选项卡项悬停事件
Definition SEvents.h:85
@ EVT_SCROLLVIEW_SIZECHANGED
滚动视图大小改变事件
Definition SEvents.h:66
@ EVT_HEADER_RELAYOUT
表头重新布局事件
Definition SEvents.h:121
@ EVT_UPDATE_TOOLTIP
更新工具提示事件
Definition SEvents.h:48
@ EVT_CTXMENU
上下文菜单事件
Definition SEvents.h:62
@ EVT_TC_DBCLICK
树形控件双击事件
Definition SEvents.h:104
@ EVT_DATETIME_CHANGED
日期时间改变事件
Definition SEvents.h:129
@ EVT_ITEMPANEL_LEAVE
面板离开事件
Definition SEvents.h:79
@ EVT_VISIBLECHANGED
可见性改变事件
Definition SEvents.h:44
@ EVT_LB_SELCHANGING
列表框选择改变中事件
Definition SEvents.h:88
@ EVT_DESTROY
销毁事件
Definition SEvents.h:42
@ EVT_LV_SELCHANGING
列表视图选择改变中事件
Definition SEvents.h:107
@ EVT_CALENDAR_SELDAY
日历选择日期事件
Definition SEvents.h:126
Template class implementing the IObjRef interface.