mGNCS API Reference  v1.2.0
A new control set and a new framework for MiniGUI apps
mlist_layout.h
Go to the documentation of this file.
1 
43 #ifndef _MGUI_WIDGET_LAYOUT_H
44 #define _MGUI_WIDGET_LAYOUT_H
45 
46 #ifdef _MGNCSCTRL_LIST
47 
48 #ifdef __cplusplus
49 extern "C" {
50 #endif /* __cplusplus */
51 
57 typedef struct _mListLayout mListLayout;
58 typedef struct _mListLayoutClass mListLayoutClass;
59 
60 #define mListLayoutHeader(className)\
61  mObjectHeader(className) \
62  mAbstractList *list; \
63  Uint16 itemHeight; \
64  Uint16 itemWidth;
65 
66 struct _mListLayout
67 {
68  mListLayoutHeader(mListLayout)
69 };
70 
71 #define mListLayoutClassHeader(clsName, superCls) \
72  mObjectClassHeader(clsName, superCls) \
73  BOOL (*setProperty)(clsName*, int id, DWORD value); \
74  DWORD (*getProperty)(clsName*, int id); \
75  mNode* (*onDirKey)(clsName*,mNode* refNode, int direct);\
76  mNode* (*onMouseHit)(clsName*, int mouseX, int mouseY); \
77  int (*getNodeRect)(clsName*, mNode *node, RECT *rcNode);\
78  BOOL (*recalcContSize)(clsName*, int flags); \
79  void (*init)(clsName*, mAbstractList *list, int defItemW, int defItemH);\
80  void (*update)(clsName*, HDC hdc, const RECT* rcVis, RECT *rcCont); \
81  void (*nodeEvent)(clsName*, int eventId, DWORD eventInfo);
82 
83 struct _mListLayoutClass
84 {
85  mListLayoutClassHeader(mListLayout, mObject)
86 };
87 
88 enum mListLayoutStatus
89 {
90  NCSF_LIST_LAYOUT_ITEMHCHANGED = 0x01,
91  NCSF_LIST_LAYOUT_ITEMWCHANGED = 0x02,
92 };
93 
98 enum mListLayoutProp
99 {
100 
101  NCSP_LIST_LAYOUT_DEFITEMHEIGHT = 10,//RW
102  NCSP_LIST_LAYOUT_DEFITEMWIDTH, //RW
106  NCSP_LIST_LAYOUT_MAX,
107 };
108 
115 MGNCS_EXPORT extern mListLayoutClass g_stmListLayoutCls;
116 
119 /*=========================================================*/
120 typedef struct _mLVIconLayout mLVIconLayout;
121 typedef struct _mLVIconLayoutClass mLVIconLayoutClass;
122 
123 #define mLVIconLayoutHeader(className) \
124  mListLayoutHeader(className) \
125  int nrCol;
126 
127 struct _mLVIconLayout
128 {
129  mLVIconLayoutHeader(mLVIconLayout)
130 };
131 
132 #define mLVIconLayoutClassHeader(clsName, superCls) \
133  mListLayoutClassHeader(clsName, superCls)
134 
135 struct _mLVIconLayoutClass
136 {
137  mLVIconLayoutClassHeader(mLVIconLayout, mListLayout)
138 };
139 
140 MGNCS_EXPORT extern mLVIconLayoutClass g_stmLVIconLayoutCls;
141 
142 /*=========================================================*/
143 typedef struct _mLHIconLayout mLHIconLayout;
144 typedef struct _mLHIconLayoutClass mLHIconLayoutClass;
145 
146 #define mLHIconLayoutHeader(className) \
147  mListLayoutHeader(className) \
148  Uint16 nrRow;
149 
150 struct _mLHIconLayout
151 {
152  mLHIconLayoutHeader(mLHIconLayout)
153 };
154 
155 #define mLHIconLayoutClassHeader(clsName, superCls) \
156  mListLayoutClassHeader(clsName, superCls)
157 
158 struct _mLHIconLayoutClass
159 {
160  mLHIconLayoutClassHeader(mLHIconLayout, mListLayout)
161 };
162 
163 MGNCS_EXPORT extern mLHIconLayoutClass g_stmLHIconLayoutCls;
164 
165 /*=========================================================*/
166 typedef struct _mLHCenterBoxLayout mLHCenterBoxLayout;
167 typedef struct _mLHCenterBoxLayoutClass mLHCenterBoxLayoutClass;
168 
169 #define mLHCenterBoxLayoutHeader(className) \
170  mLHIconLayoutHeader(className) \
171  int offx;
172 
173 struct _mLHCenterBoxLayout
174 {
175  mLHCenterBoxLayoutHeader(mLHIconLayout)
176 };
177 
178 #define mLHCenterBoxLayoutClassHeader(clsName, superCls) \
179  mLHIconLayoutClassHeader(clsName, superCls)
180 
181 struct _mLHCenterBoxLayoutClass
182 {
183  mLHCenterBoxLayoutClassHeader(mLHCenterBoxLayout, mLHIconLayout)
184 };
185 
190 enum mLHCenterBoxLayoutProp
191 {
195  NCSP_HCBOX_LAYOUT_OFFX = NCSP_LIST_LAYOUT_MAX + 1, //RO
199  NCSP_HCBOX_LAYOUT_MAX,
200 };
201 
202 MGNCS_EXPORT extern mLHCenterBoxLayoutClass g_stmLHCenterBoxLayoutCls;
203 
204 /*=========================================================*/
205 typedef struct _NCS_GROUP_INFO
206 {
207  int id;
208  char *text;
209  DWORD addData;
210 }NCS_GROUP_INFO;
211 
212 typedef struct _mLGroupLayout mLGroupLayout;
213 typedef struct _mLGroupLayoutClass mLGroupLayoutClass;
214 
215 #define NCSID_UNNAMED_GROUP 0
216 #define NCSID_UNNAMED_GROUPTEXT "Unnamed"
217 //return group id, if no group return NCSID_UNNAMED_GROUP
218 typedef int (*NCS_CB_INGROUP)(mNode *node);
219 
220 #define mLGroupLayoutHeader(className) \
221  mLVIconLayoutHeader(className) \
222  NCS_CB_CMPNODE cbCmpNode; \
223  NCS_CB_CMPNODE cbCmpGroup; \
224  NCS_CB_INGROUP cbInGroup; \
225  BOOL defaultGroup; \
226  mNode *groupRoot; \
227  int defGroupH;
228 
229 struct _mLGroupLayout
230 {
231  mLGroupLayoutHeader(mLGroupLayout)
232 };
233 
234 #define mLGroupLayoutClassHeader(clsName, superCls) \
235  mLVIconLayoutClassHeader(clsName, superCls) \
236  void (*setGroupInfo)(clsName*, NCS_CB_INGROUP inGroup, NCS_GROUP_INFO *groupInfo, int groupSize);\
237  NCS_CB_CMPNODE (*decorateNodeCmp)(clsName*, NCS_CB_CMPNODE func); \
238  NCS_CB_INGROUP (*setInGroupFunc)(clsName*, NCS_CB_INGROUP func); \
239  BOOL (*resetGroup)(clsName*, NCS_GROUP_INFO *groupInfo, int groupSize);
240 
241 struct _mLGroupLayoutClass
242 {
243  mLGroupLayoutClassHeader(mLGroupLayout, mLVIconLayout)
244 };
245 
246 
251 enum mLGroupLayoutProp
252 {
253 
254  NCSP_LGROUP_LAYOUT_NODECMPFUNC = NCSP_LIST_LAYOUT_MAX + 1, //RO
255 
256  NCSP_LGROUP_LAYOUT_GROUPCMPFUNC,//RW
260  NCSP_LGROUP_LAYOUT_MAX,
261 };
262 
263 MGNCS_EXPORT extern mLGroupLayoutClass g_stmLGroupLayoutCls;
264 
265 #ifdef __cplusplus
266 }
267 #endif /* __cplusplus */
268 
269 #endif /* _MGUI_WIDGET_LAYOUT_H */
270 #endif //_MGNCSCTRL_LIST
271 
the Object struct
The structure of mNode. It is the basic class of all nodes occur within specific controls. For example, a list can contain it.