54 #ifdef _MGNCSCTRL_LISTVIEW
56 #ifndef _MGUI_CTRL_LISTV_H
57 #define _MGUI_CTRL_LISTV_H
69 typedef struct _mListView mListView;
70 typedef struct _mListViewClass mListViewClass;
71 typedef struct _mListViewRenderer mListViewRenderer;
80 NCSID_LISTV_IR_PARENT,
82 NCSID_LISTV_IR_FIRSTCHILD,
84 NCSID_LISTV_IR_LASTCHILD,
86 NCSID_LISTV_IR_NEXTSIBLING,
88 NCSID_LISTV_IR_PREVSIBLING,
95 #define NCSF_LSTHDR_LEFTALIGN (0x00<<NCSF_LSTCLM_SHIFT)
101 #define NCSF_LSTHDR_TOPALIGN (0x00<<NCSF_LSTCLM_SHIFT)
107 #define NCSF_LSTHDR_RIGHTALIGN (0x01<<NCSF_LSTCLM_SHIFT)
113 #define NCSF_LSTHDR_CENTERALIGN (0x02<<NCSF_LSTCLM_SHIFT)
119 #define NCSF_LSTHDR_BOTTOMALIGN (0x04<<NCSF_LSTCLM_SHIFT)
125 #define NCSF_LSTHDR_VCENTERALIGN (0x08<<NCSF_LSTCLM_SHIFT)
131 #define NCSF_LSTHDR_VALIGNMASK (0x0C<<NCSF_LSTCLM_SHIFT)
137 #define NCSF_LSTHDR_SHIFT (NCSF_LSTCLM_SHIFT+4)
146 NCSID_LISTV_FT_ADDDATA,
154 typedef struct _NCS_LISTV_FINDINFO
157 ncsListVFindType type;
182 typedef struct _NCS_LISTV_CLMINFO
218 typedef struct _NCS_LISTV_ITEMDATA
243 typedef struct _NCS_LISTV_ITEMINFO
267 NCS_LISTV_ITEMDATA *data;
273 typedef void (*NCS_CB_LISTV_DRAWHDRBK)(mListView *
self,
HITEM hHdr, HDC hdc, RECT *rcDraw);
275 typedef void (*NCS_CB_LISTV_DRAWHDR)(mListView *
self,
HITEM hHdr, HDC hdc, RECT *rcDraw);
277 typedef void (*NCS_CB_DRAWITEMBK)(mListView *
self,
HITEM hItem, HDC hdc, RECT *rcDraw);
279 typedef struct _NCS_CB_LISTV_CSTMHDROPS
282 NCS_CB_LISTV_DRAWHDRBK pfnDrawHdrBk;
284 NCS_CB_LISTV_DRAWHDR pfnDrawHdrItem;
285 } NCS_CB_LISTV_CSTMHDROPS;
288 #define NCSSPEC_LISTV_HDR MAX_USER_SPECIAL_KEY + 2000
290 typedef struct _NCS_LISTV_CLMRD{
292 const char* image_file;
297 MGNCS_EXPORT
extern const unsigned char gListVColumnRecordTypes[];
303 #define NCSCTRL_LISTVIEW NCSCLASSNAME("listview")
309 #define NCSS_LISTV_NOTIFY NCSS_NOTIFY
315 #define NCSS_LISTV_LOOP NCSS_ITEMV_LOOP
320 #define NCSS_LISTV_MULTIPLE NCSS_ITEMV_MULTIPLE
326 #define NCSS_LISTV_SINGLE NCSS_ITEMV_SINGLE
332 #define NCSS_LISTV_CHECKBOX (0x0001<<NCSS_ITEMV_SHIFT)
339 #define NCSS_LISTV_AUTOCHECK (0x0002<<NCSS_ITEMV_SHIFT)
345 #define NCSS_LISTV_AUTOCHECKBOX \
346 (NCSS_LISTV_CHECKBOX | NCSS_LISTV_AUTOCHECK)
352 #define NCSS_LISTV_TREE (0x0004<<NCSS_ITEMV_SHIFT)
358 #define NCSS_LISTV_WITHICON (0x0008<<NCSS_ITEMV_SHIFT)
364 #define NCSS_LISTV_SORT (0x0010<<NCSS_ITEMV_SHIFT)
370 #define NCSS_LISTV_NOHDRDRAG (0x0020<<NCSS_ITEMV_SHIFT)
376 #define NCSS_LISTV_SHIFT (NCSS_ITEMV_SHIFT + 6)
378 #define mListViewHeader(className) \
379 mItemViewHeader(className) \
380 NCS_CB_LISTV_DRAWHDRBK drawHdrBk; \
381 NCS_CB_LISTV_DRAWHDR drawHdrItem;\
382 NCS_CB_DRAWITEMBK drawItemBk; \
383 NCS_CB_DRAWITEM drawSubItem;\
384 mItemManager *hdrList; \
385 mListItem *rootItem; \
386 ncsLstClmSortType sort; \
390 NCS_CB_LISTV_CMPCLM pfnSort; \
395 mListColumn *clickedHead; \
434 mListViewHeader(mListView)
437 #define mListViewClassHeader(clsName, parentClass) \
438 mItemViewClassHeader(clsName, parentClass) \
439 NCS_CB_DRAWITEMBK (*setItemBkDraw)(clsName*, NCS_CB_DRAWITEMBK func);\
440 NCS_CB_DRAWITEM (*setSubItemDraw)(clsName*, NCS_CB_DRAWITEM func); \
441 HITEM (*getRelatedItem)(clsName*,HITEM hItem,ncsListVIRType type); \
442 void (*setBackground)(clsName*,int row,int col,int *color); \
443 void (*setForeground)(clsName*,int row,int col,int *color); \
444 int (*getBackground)(clsName*,int row,int col,int *color); \
445 int (*getForeground)(clsName*,int row,int col,int *color); \
446 void (*sort)(clsName*, NCS_CB_LISTV_CMPCLM func, int col, ncsLstClmSortType sort);\
447 void (*setCustomDrawHeader)(clsName*, NCS_CB_LISTV_CSTMHDROPS *func);\
448 BOOL (*setItemInfo)(clsName*, NCS_LISTV_ITEMDATA *info); \
449 BOOL (*getItemInfo)(clsName*, NCS_LISTV_ITEMDATA *info); \
450 const char* (*getItemText)(clsName*, int row, int col); \
451 int (*getItemTextLen)(clsName*, int row, int col); \
452 BOOL (*setItemText)(clsName*, int row, int col, const char* str); \
453 void (*setSortDirection)(clsName*, ncsLstClmSortType direction); \
454 ncsLstClmSortType (*getSortDirection)(clsName*); \
455 HITEM (*findItem)(clsName*, NCS_LISTV_FINDINFO *info); \
456 mListColumn* (*getColumn)(clsName*, int index); \
457 int (*getColumnIndex)(clsName*, mListColumn *column); \
458 int (*getColumnWidth)(clsName*, int index); \
459 void (*setColumnWidth)(clsName*, int index, int width); \
460 int (*getColumnCount)(clsName*); \
461 mListColumn* (*getSortColumn)(clsName*); \
462 void (*setSortColumn)(clsName*, mListColumn* column); \
463 void (*showColumn)(clsName*, mListColumn *column); \
464 BOOL (*delColumn)(clsName*, int index); \
465 BOOL (*addColumn)(clsName*, NCS_LISTV_CLMINFO *info); \
466 HITEM (*addItem)(clsName*, NCS_LISTV_ITEMINFO *info); \
467 BOOL (*setHeadText)(clsName*, int col, const char* text); \
468 HITEM (*getChildItem)(clsName*, HITEM parent,int index); \
469 int (*getChildCount)(clsName*, HITEM hItem); \
470 int (*foldItem)(clsName*, HITEM hItem, BOOL fold);
612 struct _mListViewClass
614 mListViewClassHeader(mListView,
mItemView)
617 #define mListViewRendererHeader(clsName, parentClass) \
618 mItemViewRendererHeader(clsName, parentClass) \
619 void (*drawHeader) (clsName *self, HDC hdc, const RECT* pRect, \
620 DWORD color, int flag); \
621 void (*drawFold) (clsName *self, HDC hdc, const RECT* pRect, \
622 DWORD color, HICON icon, int status, int next);
637 struct _mListViewRenderer {
638 mListViewRendererHeader(mListView,
mItemView)
656 NCSP_LISTV_HDRVISIBLE,
658 NCSP_LISTV_SORTCOLUMN,
660 NCSP_LISTV_GRIDLINEWIDTH,
662 NCSP_LISTV_GRIDLINECOLOR,
688 NCSN_LISTV_ITEMDBCLK,
692 NCSN_LISTV_UNFOLDITEM,
703 MGNCS_EXPORT
extern mListViewClass g_stmListViewCls;
711 #endif //_MGNCSCTRL_LISTVIEW