soui 5.0.0.1
Soui5 Doc
 
Loading...
Searching...
No Matches
SEvtArgs-i.h
1#ifndef __SEVTARGS_I__H__
2#define __SEVTARGS_I__H__
3
5
6SNSBEGIN
7
8#undef INTERFACE
9#define INTERFACE IEvtArgs
10DECLARE_INTERFACE_(IEvtArgs, IObject)
11{
12 DEF_OBJ_BASE(IEvtArgs, Event)
13#include <interface/SobjectApi.h>
14
15 //-------------------------------------------------------------------------------------------
16
17 /**
18 * @brief 获取事件发送对象
19 * @return IObject *--事件发送对象
20 */
21 STDMETHOD_(IObject *, Sender)(THIS) PURE;
22
23 /**
24 * @brief 获取事件发送对象ID
25 * @return int--事件发送对象ID
26 */
27 STDMETHOD_(int, IdFrom)(CTHIS) SCONST PURE;
28
29 /**
30 * @brief 设置事件的发送对象ID
31 * @param id int--发送对象ID
32 * @return void
33 */
34 STDMETHOD_(void, SetIdFrom)(THIS_ int id) PURE;
35
36 /**
37 * @brief 获取事件发送对象Name
38 * @return LPCWSTR--事件发送对象Name
39 */
40 STDMETHOD_(LPCWSTR, NameFrom)(CTHIS) SCONST PURE;
41
42 /**
43 * @brief 设置事件发送对象Name
44 * @param name LPCWSTR--事件发送对象Name
45 * @return void
46 */
47 STDMETHOD_(void, SetNameFrom)(THIS_ LPCWSTR name) PURE;
48
49 /**
50 * @brief 获取事件是否需要冒泡传递
51 * @return BOOL TRUE--冒泡传递
52 */
53 STDMETHOD_(BOOL, IsBubbleUp)(CTHIS) SCONST PURE;
54
55 /**
56 * @brief 设置事件的冒泡传递
57 * @param bBubbleUp BOOL, FALSE--中止传递
58 * @return void
59 */
60 STDMETHOD_(void, SetBubbleUp)(THIS_ BOOL bBubbleUp) PURE;
61
62 /**
63 * @brief 获取事件处理次数
64 * @return UINT 事件处理次数
65 */
66 STDMETHOD_(UINT, HandleCount)(CTHIS) SCONST PURE;
67
68 /**
69 * @brief 增加事件处理计数
70 * @return void
71 */
72 STDMETHOD_(void, IncreaseHandleCount)(THIS) PURE;
73
74 /**
75 * @brief 获取事件对象关联的数据结构体指针
76 * @return LPVOID 事件对象关联的数据结构体指针
77 * @remark 不同事件对象包含不同的数据,获取指针再转换为结构体指针。主要给C接口使用。
78 */
79 STDMETHOD_(LPVOID, Data)(THIS) PURE;
80};
81
82/*!
83\brief
84 Defines abstract interface which will be used when constructing various
85 functor objects that bind slots to signals (or in CEGUI terms, handlers to
86 events).
87*/
88#undef INTERFACE
89#define INTERFACE IEvtSlot
90DECLARE_INTERFACE_(IEvtSlot, IObjRef)
91{
92 //! 添加引用
93 /*!
94 * @return long - 当前引用计数
95 */
96 STDMETHOD_(long, AddRef)(THIS) PURE;
97
98 //! 释放引用
99 /*!
100 * @return long - 当前引用计数
101 */
102 STDMETHOD_(long, Release)(THIS) PURE;
103
104 //! 释放对象
105 /*!
106 * @return void
107 */
108 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
109
110 /**
111 * @brief 执行事件
112 * @param pArg IEvtArgs* 事件对象
113 * @return BOOL TRUE--响应了事件,事件对象增加使用计数, FALSE--事件没有响应
114 */
115 STDMETHOD_(BOOL, Run)(THIS_ IEvtArgs * pArg) PURE;
116
117 /**
118 * @brief clone一个事件槽
119 * @return IEvtSlot * clone出来的对象
120 */
121 STDMETHOD_(IEvtSlot *, Clone)(CTHIS) SCONST PURE;
122
123 /**
124 * @brief 判断两个IEvtSlot是否相等
125 * @param sour IEvtSlot * 比较的IEvtSlot
126 * @return BOOL TRUE--相等, FALSE--不相等
127 */
128 STDMETHOD_(BOOL, Equal)(CTHIS_ const IEvtSlot *sour) SCONST PURE;
129
130 /**
131 * @brief 获取IEvtSlot类型
132 * @return UINT IEvtSlot类型
133 */
134 STDMETHOD_(UINT, GetSlotType)(CTHIS) SCONST PURE;
135};
136
137/**
138 * @brief 事件处理回调
139 * @param pEvt IEvtArgs * 事件对象
140 * @param Ctx void * 事件处理上下文
141 * @return BOOL TRUE--事件被处理,增加处理计数
142 */
143typedef BOOL (*FunCallback)(IEvtArgs *pEvt, void *Ctx);
144
145#define EventArgs IEvtArgs
146SNSEND
147#endif // __SEVTARGS_I__H__
Interface for reference counting.
Definition obj-ref-i.h:19