soui 5.0.0.1
Soui5 Doc
 
Loading...
Searching...
No Matches
SEventCrack.h
Go to the documentation of this file.
1/**
2 * Copyright (C) 2014-2050
3 * All rights reserved.
4 *
5 * @file SEventCrack.h
6 * @brief
7 * @version v1.0
8 * @author SOUI group
9 * @date 2014/09/05
10 *
11 * Describe SOUI系统中使用的事件映射宏
12 */
13
14#define EVENT_MAP_BEGIN() \
15 public: \
16 virtual BOOL _HandleEvent(SNS::IEvtArgs *pEvt) \
17 { \
18 UINT uCode = pEvt->GetID(); \
19 UINT nCount = 0;
20
21#define EVENT_MAP_DECLEAR() \
22 protected: \
23 virtual BOOL _HandleEvent(SNS::IEvtArgs *pEvt);
24
25#define EVENT_MAP_BEGIN2(classname) \
26 BOOL classname::_HandleEvent(SNS::IEvtArgs *pEvt) \
27 { \
28 UINT uCode = pEvt->GetID(); \
29 UINT nCount = 0;
30
31#define EVENT_MAP_END() \
32 if (pEvt->IsBubbleUp()) \
33 { \
34 BOOL bRet = __super::_HandleEvent(pEvt); \
35 nCount += bRet ? 1 : 0; \
36 } \
37 return nCount > 0; \
38 }
39
40#define EVENT_MAP_END2(baseCls) \
41 if (pEvt->IsBubbleUp()) \
42 { \
43 BOOL bRet = baseCls::_HandleEvent(pEvt); \
44 nCount += bRet ? 1 : 0; \
45 } \
46 return nCount > 0; \
47 }
48
49#define EVENT_MAP_BREAK() \
50 return nCount > 0; \
51 }
52
53#define CHAIN_EVENT_MAP(ChainClass) \
54 if (pEvt->IsBubbleUp()) \
55 { \
56 BOOL bRet = ChainClass::_HandleEvent(pEvt); \
57 nCount += bRet ? 1 : 0; \
58 if (bRet && !pEvt->IsBubbleUp()) \
59 return TRUE; \
60 }
61
62#define CHAIN_EVENT_MAP_MEMBER(theChainMember) \
63 if (pEvt->IsBubbleUp()) \
64 { \
65 BOOL bRet = (theChainMember)._HandleEvent(pEvt); \
66 nCount += bRet ? 1 : 0; \
67 if (bRet && !pEvt->IsBubbleUp()) \
68 return TRUE; \
69 }
70
71#define EVENT_CHECK_SENDER_ROOT(pRoot) \
72 { \
73 if (!pRoot) \
74 return FALSE; \
75 SNS::SWindow *pWnd = SNS::sobj_cast<SNS::SWindow>(pEvt->Sender()); \
76 if (pWnd && pRoot != pWnd && !pWnd->IsDescendant(pRoot)) \
77 return FALSE; \
78 }
79
80// void OnEvent(IEvtArgs *pEvt)
81#define EVENT_HANDLER(cd, func) \
82 if (cd == uCode) \
83 { \
84 nCount++; \
85 pEvt->SetBubbleUp(false); \
86 func(pEvt); \
87 if (!pEvt->IsBubbleUp()) \
88 return TRUE; \
89 }
90
91// void OnEvent(IEvtArgs *pEvt)
92#define EVENT_ID_HANDLER(id, cd, func) \
93 if (cd == uCode && id == pEvt->IdFrom()) \
94 { \
95 nCount++; \
96 pEvt->SetBubbleUp(false); \
97 func(pEvt); \
98 if (!pEvt->IsBubbleUp()) \
99 return TRUE; \
100 }
101
102// void OnEvent(IEvtArgs *pEvt)
103#define EVENT_ID_RANGE_HANDLER(idMin, idMax, cd, func) \
104 if (cd == uCode && idMin <= pEvt->IdFrom() && idMax >= pEvt->IdFrom()) \
105 { \
106 nCount++; \
107 pEvt->SetBubbleUp(false); \
108 func(pEvt); \
109 if (!pEvt->IsBubbleUp()) \
110 return TRUE; \
111 }
112
113// void OnEvent(IEvtArgs *pEvt)
114#define EVENT_NAME_HANDLER(name, cd, func) \
115 if (cd == uCode && pEvt->NameFrom() != NULL && wcscmp(pEvt->NameFrom(), name) == 0) \
116 { \
117 nCount++; \
118 pEvt->SetBubbleUp(false); \
119 func(pEvt); \
120 if (!pEvt->IsBubbleUp()) \
121 return TRUE; \
122 }
123
124// void OnCommand(IEvtArgs *pEvt)
125#define EVENT_COMMAND(func) \
126 if (SNS::EVT_CMD == uCode) \
127 { \
128 nCount++; \
129 pEvt->SetBubbleUp(false); \
130 func(pEvt); \
131 if (!pEvt->IsBubbleUp()) \
132 return TRUE; \
133 }
134
135// void OnCommand()
136#define EVENT_ID_COMMAND(id, func) \
137 if (SNS::EVT_CMD == uCode && id == pEvt->IdFrom()) \
138 { \
139 nCount++; \
140 pEvt->SetBubbleUp(false); \
141 func(); \
142 if (!pEvt->IsBubbleUp()) \
143 return TRUE; \
144 }
145
146// void OnCommand(int magic)
147#define EVENT_ID_COMMAND_MAGIC(id, func, magic) \
148 if (SNS::EVT_CMD == uCode && id == pEvt->IdFrom()) \
149 { \
150 nCount++; \
151 pEvt->SetBubbleUp(false); \
152 func(magic); \
153 if (!pEvt->IsBubbleUp()) \
154 return TRUE; \
155 }
156
157// void OnCommand(int nID)
158#define EVENT_ID_COMMAND_RANGE(idMin, idMax, func) \
159 if (SNS::EVT_CMD == uCode && idMin <= pEvt->IdFrom() && idMax >= pEvt->IdFrom()) \
160 { \
161 nCount++; \
162 pEvt->SetBubbleUp(false); \
163 func(pEvt->IdFrom()); \
164 if (!pEvt->IsBubbleUp()) \
165 return TRUE; \
166 }
167
168// void OnCommand()
169#define EVENT_NAME_COMMAND(name, func) \
170 if (SNS::EVT_CMD == uCode && pEvt->NameFrom() != NULL && wcscmp(pEvt->NameFrom(), name) == 0) \
171 { \
172 nCount++; \
173 pEvt->SetBubbleUp(false); \
174 func(); \
175 if (!pEvt->IsBubbleUp()) \
176 return TRUE; \
177 }
178
179// void OnCommand(int magic)
180#define EVENT_NAME_COMMAND_MAGIC(name, func, magic) \
181 if (SNS::EVT_CMD == uCode && pEvt->NameFrom() != NULL && wcscmp(pEvt->NameFrom(), name) == 0) \
182 { \
183 nCount++; \
184 pEvt->SetBubbleUp(false); \
185 func(magic); \
186 if (!pEvt->IsBubbleUp()) \
187 return TRUE; \
188 }
189
190// BOOL OnContextMenu(CPoint pt)
191#define EVENT_ID_CONTEXTMENU(id, func) \
192 if (SNS::EVT_CTXMENU == uCode && pEvt->IdFrom() == id) \
193 { \
194 nCount++; \
195 pEvt->SetBubbleUp(false); \
196 SNS::EventCtxMenu *pEvtCtxMenu = (SNS::EventCtxMenu *)pEvt; \
197 pEvtCtxMenu->bCancel = func(pEvtCtxMenu->pt); \
198 if (!pEvt->IsBubbleUp()) \
199 return TRUE; \
200 }
201
202// BOOL OnContextMenu(CPoint pt)
203#define EVENT_NAME_CONTEXTMENU(name, func) \
204 if (SNS::EVT_CTXMENU == uCode && pEvt->NameFrom() != NULL && wcscmp(pEvt->NameFrom(), name) == 0) \
205 { \
206 nCount++; \
207 pEvt->SetBubbleUp(false); \
208 SNS::EventCtxMenu *pEvtCtxMenu = (SNS::EventCtxMenu *)pEvt; \
209 pEvtCtxMenu->bCancel = func(pEvtCtxMenu->pt); \
210 if (!pEvt->IsBubbleUp()) \
211 return TRUE; \
212 }