mGNCS API Reference  v1.5.0
A new control set and a new framework for MiniGUI apps
mcombobox.h
Go to the documentation of this file.
1 //
3 // IMPORTANT NOTICE
4 //
5 // The following open source license statement does not apply to any
6 // entity in the Exception List published by FMSoft.
7 //
8 // For more information, please visit:
9 //
10 // https://www.fmsoft.cn/exception-list
11 //
13 
54 #ifdef _MGNCSCTRL_COMBOBOX
55 
56 #ifndef _MGUI_PANEL_COMBOBOX_H
57 #define _MGUI_PANEL_COMBOBOX_H
58 
59 
60 #ifdef __cplusplus
61 extern "C" {
62 #endif /* __cplusplus */
63 
73 #define NCSCTRL_COMBOBOX NCSCLASSNAME("combobox")
74 
75 typedef struct _mCombobox mCombobox;
76 typedef struct _mComboboxClass mComboboxClass;
77 typedef struct _mComboboxRenderer mComboboxRenderer;
78 
79 #define mComboboxHeader(clsName) \
80  mPanelHeader(clsName) \
81  mListBox *listbox; \
82  mSlEdit *edit; \
83  RECT rcList; \
84  RECT rcEdit; \
85  RECT rcBtn; \
86  unsigned int flag; \
87  int dropWidth;
88 
110 struct _mCombobox
111 {
112  mComboboxHeader(mCombobox)
113 };
114 
115 #define mComboboxClassHeader(clsName, parentClass) \
116  mPanelClassHeader(clsName, parentClass) \
117  BOOL (*addItem)(clsName *self, const char *item, DWORD addData); \
118  BOOL (*removeItem)(clsName *self, int index); \
119  BOOL (*setItem)(clsName *self, int index, const char *item); \
120  const char* (*getItem)(clsName *self, int index); \
121  void (*setAddData)(clsName *self, int index, DWORD addData); \
122  DWORD (*getAddData)(clsName *self, int index);
123 
149 struct _mComboboxClass
150 {
151  mComboboxClassHeader(mCombobox, mPanel)
152 };
153 
154 MGNCS_EXPORT extern mComboboxClass g_stmComboboxCls;
155 
156 #define mComboboxRendererHeader(clsName, parentClass) \
157  mPanelRendererHeader(clsName, parentClass) \
158  void (*drawDropDownBtn)(clsName* self, HDC, const RECT*);
159 
172 struct _mComboboxRenderer {
173  mComboboxRendererHeader(mCombobox, mPanel)
174 };
175 
180 enum mComboboxProp {
186  NCSP_COMB_ITEMHEIGHT = NCSP_LSTBOX_ITEMHEIGHT,
192  NCSP_COMB_ITEMCOUNT = NCSP_LSTBOX_ITEMCOUNT,
199  NCSP_COMB_DROPDOWNHEIGHT = NCSP_PANEL_MAX + 1,
206  NCSP_COMB_TEXTLIMIT,
213  NCSP_COMB_SELECT,
214  NCSP_COMB_MAX
215 };
216 
217 
222 #define NCSS_CMBOX_SIMPLE 0x0000L
223 
228 #define NCSS_CMBOX_DROPDOWNLIST (0x0001L<<NCSS_PANEL_SHIFT)
229 
234 #define NCSS_CMBOX_SORT (0x0002L<<NCSS_PANEL_SHIFT)
235 
240 #define NCSS_CMBOX_EDITNOBORDER (0x0004L<<NCSS_PANEL_SHIFT)
241 
246 #define NCSS_CMBOX_EDITBASELINE (0x0008L<<NCSS_PANEL_SHIFT)
247 
252 #define NCSS_CMBOX_READONLY (0x0010L<<NCSS_PANEL_SHIFT)
253 
258 #define NCSS_CMBOX_UPPERCASE (0x0020L<<NCSS_PANEL_SHIFT)
259 
264 #define NCSS_CMBOX_LOWERCASE (0x0040L<<NCSS_PANEL_SHIFT)
265 
270 #define NCSS_CMBOX_AUTOFOCUS (0x0080L<<NCSS_PANEL_SHIFT)
271 
272 #define NCSS_CMBOX_SHIFT (NCSS_PANEL_SHIFT + 9)
273 
274 
276 enum enumComboboxNotify {
277  NCSN_CMBOX_SELCHANGE = NCSN_PANEL_MAX + 1,
278  NCSN_CMBOX_SETFOCUS,
279  NCSN_CMBOX_KILLFOCUS,
280  NCSN_CMBOX_EDITCHANGE,
281  NCSN_CMBOX_DROPDOWN,
282  NCSN_CMBOX_CLOSEUP,
283  NCSN_CMBOX_SELECTOK,
284  NCSN_CMBOX_SELECTCANCEL,
285  NCSN_CMBOX_MAX
286 };
287 
288 
292 
293 #define NCSF_CMBOX_BUTTONDOWN 0x0001
294 #define NCSF_CMBOX_BUTTONUP 0x0002
295 #define NCSF_CMBOX_DROPPED 0x0004
296 #define NCSF_CMBOX_HILIGHT 0x0008
297 
298 #define SET_STATE(lp, mask) (lp->flag |= (mask))
299 #define CLEAR_STATE(lp, mask) (lp->flag &= ~(mask))
300 #define IS_SET(lp, mask) (lp->flag & (mask))
301 
304 #ifdef __cplusplus
305 }
306 #endif /* __cplusplus */
307 
308 #endif /* _MGUI_PANEL_COMBOBOX_H */
309 #endif //_MGNCSCTRL_COMBOBOX
NCSN_PANEL_MAX
@ NCSN_PANEL_MAX
Definition: mpanel.h:149
NCSP_PANEL_MAX
@ NCSP_PANEL_MAX
Definition: mpanel.h:132
mPanel
The structure of mPanel control, which derived from mWidget. It is a control which is capable of cont...