Develop and Download Open Source Software

Browse Subversion Repository

Contents of /AGH/include/agh_ScreenBase.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 209 - (show annotations) (download) (as text)
Mon Oct 20 17:09:01 2008 UTC (15 years, 6 months ago) by myun2
File MIME type: text/x-chdr
File size: 7153 byte(s)
なんか色々と色々してやっとこさドラッグちゃんと動くようになりましたサ・・・
Outer実装
ドラッグの実装方法変更
1 #ifndef __SFJP_MYU__AGH_ScreenBase_H__
2 #define __SFJP_MYU__AGH_ScreenBase_H__
3
4 // Class Definitation
5 class CScreenBase : public CWindowBase, public CControlBase
6 {
7 protected:
8 // Must Override!! Methods.
9 //virtual _AGH_POINT GetCurPos()=0;
10 virtual _AGH_POINT GetCurPos(){
11 throw CAghNotImplementedException("Can't use CScreenBase::GetCurPos() because not Overrided.");
12 /*_AGH_POINT point;
13 //ZeroMemory(&point, sizeof(point));
14 point.x = -1;
15 point.y = -1;
16 return point;*/
17 }
18
19 protected:
20 // ******* Utilities (Not shuold using) ******************
21 //std::vector<agh::CControlBase*> m_ctrlPtrAry; -> 既にアリマシタ…
22
23 // Get Control Pointer from Position
24 CControlBase* GetPosControl(int x, int y)
25 {
26 // コントロールで該当するものがあるか?
27 for(int i=0; i<m_ctrlPtrAry.size(); i++)
28 {
29 CControlBase *p = m_ctrlPtrAry[i];
30 _AGH_RECT& rect = p->GetRect();
31
32 if ( agh::IsRectInternal(&rect, x, y) ){
33 return p;
34 }
35 }
36 return NULL;
37 }
38 CControlBase* GetCurPosControl(){
39 _AGH_POINT point = GetCurPos();
40 return GetPosControl( point.x, point.y );
41 }
42
43 /////////////////////////////////////////////////
44
45 _AGH_EVENT_ACCESS_MODIFIER:
46 /*
47 // 左クリック系 : Left Click Events
48 virtual void OnBackgroundLButtonClick(int x, int y){}
49 virtual void OnBackgroundLButtonDblClk(int x, int y){}
50 virtual void OnBackgroundLButtonDown(int x, int y){}
51 virtual void OnBackgroundLButtonUp(int x, int y){}
52
53 // 右クリック系 : Right Click Events
54 virtual void OnBackgroundRButtonClick(int x, int y){}
55 virtual void OnBackgroundRButtonDblClk(int x, int y){}
56 virtual void OnBackgroundRButtonDown(int x, int y){}
57 virtual void OnBackgroundRButtonUp(int x, int y){}
58
59 // 真中クリック系 : Center(Wheel) Click Events
60 virtual void OnBackgroundCButtonClick(int x, int y){}
61 virtual void OnBackgroundCButtonDblClk(int x, int y){}
62 virtual void OnBackgroundCButtonDown(int x, int y){}
63 virtual void OnBackgroundCButtonUp(int x, int y){}
64 virtual void OnBackgroundMButtonClick(int x, int y){}
65 virtual void OnBackgroundMButtonDblClk(int x, int y){}
66 virtual void OnBackgroundMButtonDown(int x, int y){}
67 virtual void OnBackgroundMButtonUp(int x, int y){}
68
69 // マウス移動 : Move Mouse Events
70 virtual void OnBackgroundMouseMove(int nPosX, int nPosY, int nMoveX, int nMoveY){}*/
71
72 // ホイール : Wheel Events
73 virtual void OnBackgroundWheelUp(int count){}
74 virtual void OnBackgroundWheelDown(int count){}
75
76 /*
77 #define _AGH_CScreenBase_EVTIMPL2(EVT_NAME, V1, V2) \
78 agh::CControlBase *pControl = GetCurPosControl(); \
79 if ( pControl == NULL ) \
80 pControl->On##EVT_NAME(x,y); \
81 else \
82 OnBackground##EVT_NAME(x,y);
83
84 virtual void OnLButtonClick(int x, int y){ _AGH_CScreenBase_EVTIMPL2(LButtonClick,x,y) }
85 virtual void OnLButtonDblClk(int x, int y){ _AGH_CScreenBase_EVTIMPL2(LButtonDblClk,x,y)}
86 */
87
88 // 1 Paramator
89 #define _AGH_CScreenBase_EVT1(EVT_NAME, TYPE1, V1) \
90 virtual void On##EVT_NAME(TYPE1 V1) \
91 { \
92 agh::CControlBase *pControl = GetCurPosControl(); \
93 if ( pControl != NULL ) \
94 pControl->On##EVT_NAME(V1); \
95 else \
96 OnBackground##EVT_NAME(V1); \
97 }
98
99
100 /*agh::CControlBase *pControl = GetCurPosControl(); \
101 if ( pControl != NULL ) \
102 /*pControl->On##EVT_NAME(V1,V2);*//* \
103 OnControl##EVT_NAME(pControl,V1,V2); \
104 else \
105 OnBackground##EVT_NAME(V1,V2); \*/
106
107 // 2 Paramator
108 #define _AGH_CScreenBase_EVT2(EVT_NAME, TYPE1, V1, TYPE2, V2) \
109 virtual void On##EVT_NAME(TYPE1 V1, TYPE2 V2) \
110 { \
111 bool bExist = false; \
112 for(int i=0; i<m_ctrlPtrAry.size(); i++) \
113 { \
114 CControlBase *p = m_ctrlPtrAry[i]; \
115 _AGH_RECT& rect = p->GetRect(); \
116 \
117 if ( agh::IsRectInternal(&rect, x, y) ){ \
118 OnControl##EVT_NAME(p,V1,V2); \
119 bExist = true; \
120 } \
121 else \
122 OnControl##EVT_NAME##Outer(p,V1,V2); \
123 } \
124 if ( !bExist ) \
125 OnBackground##EVT_NAME(V1,V2); \
126 else \
127 OnBackground##EVT_NAME##Outer(V1,V2); \
128 } \
129 \
130 /** Background Method Define **/ \
131 virtual void OnBackground##EVT_NAME(TYPE1 V1, TYPE2 V2){} \
132 \
133 /** Control Method Define **/ \
134 virtual void OnControl##EVT_NAME(CControlBase *pControl, TYPE1 V1, TYPE2 V2){ \
135 pControl->On##EVT_NAME(V1,V2); \
136 } \
137 \
138 /** Background Method Define **/ \
139 virtual void OnBackground##EVT_NAME##Outer(TYPE1 V1, TYPE2 V2){} \
140 \
141 /** Control Method Define **/ \
142 virtual void OnControl##EVT_NAME##Outer(CControlBase *pControl, TYPE1 V1, TYPE2 V2){ \
143 pControl->On##EVT_NAME##Outer(V1,V2); \
144 }
145
146 // 4 Paramator
147 #define _AGH_CScreenBase_EVT4(EVT_NAME, TYPE1, V1, TYPE2, V2, TYPE3, V3, TYPE4, V4) \
148 virtual void On##EVT_NAME(TYPE1 V1, TYPE2 V2, TYPE3 V3, TYPE4 V4) \
149 { \
150 bool bExist = false; \
151 for(int i=0; i<m_ctrlPtrAry.size(); i++) \
152 { \
153 CControlBase *p = m_ctrlPtrAry[i]; \
154 _AGH_RECT& rect = p->GetRect(); \
155 \
156 if ( agh::IsRectInternal(&rect, nPosX, nPosY) ){ \
157 OnControl##EVT_NAME(p,V1,V2,V3,V4); \
158 bExist = true; \
159 } \
160 else \
161 OnControl##EVT_NAME##Outer(p,V1,V2,V3,V4); \
162 } \
163 if ( !bExist ) \
164 OnBackground##EVT_NAME(V1,V2,V3,V4); \
165 else \
166 OnBackground##EVT_NAME##Outer(V1,V2,V3,V4); \
167 } \
168 \
169 /** Background Method Define **/ \
170 virtual void OnBackground##EVT_NAME(TYPE1 V1, TYPE2 V2, TYPE3 V3, TYPE4 V4){} \
171 \
172 /** Control Method Define **/ \
173 virtual void OnControl##EVT_NAME(CControlBase *pControl, TYPE1 V1, TYPE2 V2, TYPE3 V3, TYPE4 V4){ \
174 pControl->On##EVT_NAME(V1,V2,V3,V4); \
175 } \
176 \
177 /** Background Method Define **/ \
178 virtual void OnBackground##EVT_NAME##Outer(TYPE1 V1, TYPE2 V2, TYPE3 V3, TYPE4 V4){} \
179 \
180 /** Control Method Define **/ \
181 virtual void OnControl##EVT_NAME##Outer(CControlBase *pControl, TYPE1 V1, TYPE2 V2, TYPE3 V3, TYPE4 V4){ \
182 pControl->On##EVT_NAME##Outer(V1,V2,V3,V4); \
183 }
184
185
186 // 左クリック系 : Left Click Events
187 _AGH_CScreenBase_EVT2(LButtonClick, int, x, int, y);
188 _AGH_CScreenBase_EVT2(LButtonDblClk, int, x, int, y);
189 _AGH_CScreenBase_EVT2(LButtonDown, int, x, int, y);
190 _AGH_CScreenBase_EVT2(LButtonUp, int, x, int, y);
191
192 // 右クリック系 : Right Click Events
193 _AGH_CScreenBase_EVT2(RButtonClick, int, x, int, y);
194 _AGH_CScreenBase_EVT2(RButtonDblClk, int, x, int, y);
195 _AGH_CScreenBase_EVT2(RButtonDown, int, x, int, y);
196 _AGH_CScreenBase_EVT2(RButtonUp, int, x, int, y);
197
198 // 真中クリック系 : Center(Wheel) Click Events
199 _AGH_CScreenBase_EVT2(CButtonClick, int, x, int, y);
200 _AGH_CScreenBase_EVT2(CButtonDblClk, int, x, int, y);
201 _AGH_CScreenBase_EVT2(CButtonDown, int, x, int, y);
202 _AGH_CScreenBase_EVT2(CButtonUp, int, x, int, y);
203 _AGH_CScreenBase_EVT2(MButtonClick, int, x, int, y);
204 _AGH_CScreenBase_EVT2(MButtonDblClk, int, x, int, y);
205 _AGH_CScreenBase_EVT2(MButtonDown, int, x, int, y);
206 _AGH_CScreenBase_EVT2(MButtonUp, int, x, int, y);
207
208 // マウス移動 : Move Mouse Events
209 _AGH_CScreenBase_EVT4(MouseMove, int, nPosX, int, nPosY, int, nMoveX, int, nMoveY);
210
211 // ホイール : Wheel Events
212 _AGH_CScreenBase_EVT1(WheelUp, int, count);
213 _AGH_CScreenBase_EVT1(WheelDown, int, count);
214 };
215
216
217 #endif//__SFJP_MYU__AGH_ScreenBase_H__

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26