55 #ifndef _MGUI_WIDGET_LAYOUT_H
56 #define _MGUI_WIDGET_LAYOUT_H
58 #ifdef _MGNCSCTRL_LIST
69 typedef struct _mListLayout mListLayout;
70 typedef struct _mListLayoutClass mListLayoutClass;
72 #define mListLayoutHeader(className)\
73 mObjectHeader(className) \
74 mAbstractList *list; \
80 mListLayoutHeader(mListLayout)
83 #define mListLayoutClassHeader(clsName, superCls) \
84 mObjectClassHeader(clsName, superCls) \
85 BOOL (*setProperty)(clsName*, int id, DWORD value); \
86 DWORD (*getProperty)(clsName*, int id); \
87 mNode* (*onDirKey)(clsName*,mNode* refNode, int direct);\
88 mNode* (*onMouseHit)(clsName*, int mouseX, int mouseY); \
89 int (*getNodeRect)(clsName*, mNode *node, RECT *rcNode);\
90 BOOL (*recalcContSize)(clsName*, int flags); \
91 void (*init)(clsName*, mAbstractList *list, int defItemW, int defItemH);\
92 void (*update)(clsName*, HDC hdc, const RECT* rcVis, RECT *rcCont); \
93 void (*nodeEvent)(clsName*, int eventId, DWORD eventInfo);
95 struct _mListLayoutClass
97 mListLayoutClassHeader(mListLayout,
mObject)
100 enum mListLayoutStatus
102 NCSF_LIST_LAYOUT_ITEMHCHANGED = 0x01,
103 NCSF_LIST_LAYOUT_ITEMWCHANGED = 0x02,
113 NCSP_LIST_LAYOUT_DEFITEMHEIGHT = 10,
114 NCSP_LIST_LAYOUT_DEFITEMWIDTH,
118 NCSP_LIST_LAYOUT_MAX,
127 MGNCS_EXPORT
extern mListLayoutClass g_stmListLayoutCls;
132 typedef struct _mLVIconLayout mLVIconLayout;
133 typedef struct _mLVIconLayoutClass mLVIconLayoutClass;
135 #define mLVIconLayoutHeader(className) \
136 mListLayoutHeader(className) \
139 struct _mLVIconLayout
141 mLVIconLayoutHeader(mLVIconLayout)
144 #define mLVIconLayoutClassHeader(clsName, superCls) \
145 mListLayoutClassHeader(clsName, superCls)
147 struct _mLVIconLayoutClass
149 mLVIconLayoutClassHeader(mLVIconLayout, mListLayout)
152 MGNCS_EXPORT
extern mLVIconLayoutClass g_stmLVIconLayoutCls;
155 typedef struct _mLHIconLayout mLHIconLayout;
156 typedef struct _mLHIconLayoutClass mLHIconLayoutClass;
158 #define mLHIconLayoutHeader(className) \
159 mListLayoutHeader(className) \
162 struct _mLHIconLayout
164 mLHIconLayoutHeader(mLHIconLayout)
167 #define mLHIconLayoutClassHeader(clsName, superCls) \
168 mListLayoutClassHeader(clsName, superCls)
170 struct _mLHIconLayoutClass
172 mLHIconLayoutClassHeader(mLHIconLayout, mListLayout)
175 MGNCS_EXPORT
extern mLHIconLayoutClass g_stmLHIconLayoutCls;
178 typedef struct _mLHCenterBoxLayout mLHCenterBoxLayout;
179 typedef struct _mLHCenterBoxLayoutClass mLHCenterBoxLayoutClass;
181 #define mLHCenterBoxLayoutHeader(className) \
182 mLHIconLayoutHeader(className) \
185 struct _mLHCenterBoxLayout
187 mLHCenterBoxLayoutHeader(mLHIconLayout)
190 #define mLHCenterBoxLayoutClassHeader(clsName, superCls) \
191 mLHIconLayoutClassHeader(clsName, superCls)
193 struct _mLHCenterBoxLayoutClass
195 mLHCenterBoxLayoutClassHeader(mLHCenterBoxLayout, mLHIconLayout)
202 enum mLHCenterBoxLayoutProp
207 NCSP_HCBOX_LAYOUT_OFFX = NCSP_LIST_LAYOUT_MAX + 1,
211 NCSP_HCBOX_LAYOUT_MAX,
214 MGNCS_EXPORT
extern mLHCenterBoxLayoutClass g_stmLHCenterBoxLayoutCls;
217 typedef struct _NCS_GROUP_INFO
224 typedef struct _mLGroupLayout mLGroupLayout;
225 typedef struct _mLGroupLayoutClass mLGroupLayoutClass;
227 #define NCSID_UNNAMED_GROUP 0
228 #define NCSID_UNNAMED_GROUPTEXT "Unnamed"
230 typedef int (*NCS_CB_INGROUP)(
mNode *node);
232 #define mLGroupLayoutHeader(className) \
233 mLVIconLayoutHeader(className) \
234 NCS_CB_CMPNODE cbCmpNode; \
235 NCS_CB_CMPNODE cbCmpGroup; \
236 NCS_CB_INGROUP cbInGroup; \
241 struct _mLGroupLayout
243 mLGroupLayoutHeader(mLGroupLayout)
246 #define mLGroupLayoutClassHeader(clsName, superCls) \
247 mLVIconLayoutClassHeader(clsName, superCls) \
248 void (*setGroupInfo)(clsName*, NCS_CB_INGROUP inGroup, NCS_GROUP_INFO *groupInfo, int groupSize);\
249 NCS_CB_CMPNODE (*decorateNodeCmp)(clsName*, NCS_CB_CMPNODE func); \
250 NCS_CB_INGROUP (*setInGroupFunc)(clsName*, NCS_CB_INGROUP func); \
251 BOOL (*resetGroup)(clsName*, NCS_GROUP_INFO *groupInfo, int groupSize);
253 struct _mLGroupLayoutClass
255 mLGroupLayoutClassHeader(mLGroupLayout, mLVIconLayout)
263 enum mLGroupLayoutProp
266 NCSP_LGROUP_LAYOUT_NODECMPFUNC = NCSP_LIST_LAYOUT_MAX + 1,
268 NCSP_LGROUP_LAYOUT_GROUPCMPFUNC,
272 NCSP_LGROUP_LAYOUT_MAX,
275 MGNCS_EXPORT
extern mLGroupLayoutClass g_stmLGroupLayoutCls;
282 #endif //_MGNCSCTRL_LIST