42 #ifdef _MGNCSCTRL_LISTVIEW 44 #ifndef _MGUI_CTRL_LISTV_H 45 #define _MGUI_CTRL_LISTV_H 57 typedef struct _mListView mListView;
58 typedef struct _mListViewClass mListViewClass;
59 typedef struct _mListViewRenderer mListViewRenderer;
68 NCSID_LISTV_IR_PARENT,
70 NCSID_LISTV_IR_FIRSTCHILD,
72 NCSID_LISTV_IR_LASTCHILD,
74 NCSID_LISTV_IR_NEXTSIBLING,
76 NCSID_LISTV_IR_PREVSIBLING,
83 #define NCSF_LSTHDR_LEFTALIGN (0x00<<NCSF_LSTCLM_SHIFT) 89 #define NCSF_LSTHDR_TOPALIGN (0x00<<NCSF_LSTCLM_SHIFT) 95 #define NCSF_LSTHDR_RIGHTALIGN (0x01<<NCSF_LSTCLM_SHIFT) 101 #define NCSF_LSTHDR_CENTERALIGN (0x02<<NCSF_LSTCLM_SHIFT) 107 #define NCSF_LSTHDR_BOTTOMALIGN (0x04<<NCSF_LSTCLM_SHIFT) 113 #define NCSF_LSTHDR_VCENTERALIGN (0x08<<NCSF_LSTCLM_SHIFT) 119 #define NCSF_LSTHDR_VALIGNMASK (0x0C<<NCSF_LSTCLM_SHIFT) 125 #define NCSF_LSTHDR_SHIFT (NCSF_LSTCLM_SHIFT+4) 134 NCSID_LISTV_FT_ADDDATA,
142 typedef struct _NCS_LISTV_FINDINFO
145 ncsListVFindType type;
170 typedef struct _NCS_LISTV_CLMINFO
206 typedef struct _NCS_LISTV_ITEMDATA
231 typedef struct _NCS_LISTV_ITEMINFO
255 NCS_LISTV_ITEMDATA *data;
261 typedef void (*NCS_CB_LISTV_DRAWHDRBK)(mListView *
self,
HITEM hHdr, HDC hdc, RECT *rcDraw);
263 typedef void (*NCS_CB_LISTV_DRAWHDR)(mListView *
self,
HITEM hHdr, HDC hdc, RECT *rcDraw);
265 typedef void (*NCS_CB_DRAWITEMBK)(mListView *
self,
HITEM hItem, HDC hdc, RECT *rcDraw);
267 typedef struct _NCS_CB_LISTV_CSTMHDROPS
270 NCS_CB_LISTV_DRAWHDRBK pfnDrawHdrBk;
272 NCS_CB_LISTV_DRAWHDR pfnDrawHdrItem;
273 } NCS_CB_LISTV_CSTMHDROPS;
276 #define NCSSPEC_LISTV_HDR MAX_USER_SPECIAL_KEY + 2000 278 typedef struct _NCS_LISTV_CLMRD{
280 const char* image_file;
285 MGNCS_EXPORT
extern const unsigned char gListVColumnRecordTypes[];
291 #define NCSCTRL_LISTVIEW NCSCLASSNAME("listview") 297 #define NCSS_LISTV_NOTIFY NCSS_NOTIFY 303 #define NCSS_LISTV_LOOP NCSS_ITEMV_LOOP 308 #define NCSS_LISTV_MULTIPLE NCSS_ITEMV_MULTIPLE 314 #define NCSS_LISTV_SINGLE NCSS_ITEMV_SINGLE 320 #define NCSS_LISTV_CHECKBOX (0x0001<<NCSS_ITEMV_SHIFT) 327 #define NCSS_LISTV_AUTOCHECK (0x0002<<NCSS_ITEMV_SHIFT) 333 #define NCSS_LISTV_AUTOCHECKBOX \ 334 (NCSS_LISTV_CHECKBOX | NCSS_LISTV_AUTOCHECK) 340 #define NCSS_LISTV_TREE (0x0004<<NCSS_ITEMV_SHIFT) 346 #define NCSS_LISTV_WITHICON (0x0008<<NCSS_ITEMV_SHIFT) 352 #define NCSS_LISTV_SORT (0x0010<<NCSS_ITEMV_SHIFT) 358 #define NCSS_LISTV_NOHDRDRAG (0x0020<<NCSS_ITEMV_SHIFT) 364 #define NCSS_LISTV_SHIFT (NCSS_ITEMV_SHIFT + 6) 366 #define mListViewHeader(className) \ 367 mItemViewHeader(className) \ 368 NCS_CB_LISTV_DRAWHDRBK drawHdrBk; \ 369 NCS_CB_LISTV_DRAWHDR drawHdrItem;\ 370 NCS_CB_DRAWITEMBK drawItemBk; \ 371 NCS_CB_DRAWITEM drawSubItem;\ 372 mItemManager *hdrList; \ 373 mListItem *rootItem; \ 374 ncsLstClmSortType sort; \ 378 NCS_CB_LISTV_CMPCLM pfnSort; \ 383 mListColumn *clickedHead; \ 422 mListViewHeader(mListView)
425 #define mListViewClassHeader(clsName, parentClass) \ 426 mItemViewClassHeader(clsName, parentClass) \ 427 NCS_CB_DRAWITEMBK (*setItemBkDraw)(clsName*, NCS_CB_DRAWITEMBK func);\ 428 NCS_CB_DRAWITEM (*setSubItemDraw)(clsName*, NCS_CB_DRAWITEM func); \ 429 HITEM (*getRelatedItem)(clsName*,HITEM hItem,ncsListVIRType type); \ 430 void (*setBackground)(clsName*,int row,int col,int *color); \ 431 void (*setForeground)(clsName*,int row,int col,int *color); \ 432 int (*getBackground)(clsName*,int row,int col,int *color); \ 433 int (*getForeground)(clsName*,int row,int col,int *color); \ 434 void (*sort)(clsName*, NCS_CB_LISTV_CMPCLM func, int col, ncsLstClmSortType sort);\ 435 void (*setCustomDrawHeader)(clsName*, NCS_CB_LISTV_CSTMHDROPS *func);\ 436 BOOL (*setItemInfo)(clsName*, NCS_LISTV_ITEMDATA *info); \ 437 BOOL (*getItemInfo)(clsName*, NCS_LISTV_ITEMDATA *info); \ 438 const char* (*getItemText)(clsName*, int row, int col); \ 439 int (*getItemTextLen)(clsName*, int row, int col); \ 440 BOOL (*setItemText)(clsName*, int row, int col, const char* str); \ 441 void (*setSortDirection)(clsName*, ncsLstClmSortType direction); \ 442 ncsLstClmSortType (*getSortDirection)(clsName*); \ 443 HITEM (*findItem)(clsName*, NCS_LISTV_FINDINFO *info); \ 444 mListColumn* (*getColumn)(clsName*, int index); \ 445 int (*getColumnIndex)(clsName*, mListColumn *column); \ 446 int (*getColumnWidth)(clsName*, int index); \ 447 void (*setColumnWidth)(clsName*, int index, int width); \ 448 int (*getColumnCount)(clsName*); \ 449 mListColumn* (*getSortColumn)(clsName*); \ 450 void (*setSortColumn)(clsName*, mListColumn* column); \ 451 void (*showColumn)(clsName*, mListColumn *column); \ 452 BOOL (*delColumn)(clsName*, int index); \ 453 BOOL (*addColumn)(clsName*, NCS_LISTV_CLMINFO *info); \ 454 HITEM (*addItem)(clsName*, NCS_LISTV_ITEMINFO *info); \ 455 BOOL (*setHeadText)(clsName*, int col, const char* text); \ 456 HITEM (*getChildItem)(clsName*, HITEM parent,int index); \ 457 int (*getChildCount)(clsName*, HITEM hItem); \ 458 int (*foldItem)(clsName*, HITEM hItem, BOOL fold); 600 struct _mListViewClass
602 mListViewClassHeader(mListView,
mItemView)
605 #define mListViewRendererHeader(clsName, parentClass) \ 606 mItemViewRendererHeader(clsName, parentClass) \ 607 void (*drawHeader) (clsName *self, HDC hdc, const RECT* pRect, \ 608 DWORD color, int flag); \ 609 void (*drawFold) (clsName *self, HDC hdc, const RECT* pRect, \ 610 DWORD color, HICON icon, int status, int next); 625 struct _mListViewRenderer {
626 mListViewRendererHeader(mListView,
mItemView)
644 NCSP_LISTV_HDRVISIBLE,
646 NCSP_LISTV_SORTCOLUMN,
648 NCSP_LISTV_GRIDLINEWIDTH,
650 NCSP_LISTV_GRIDLINECOLOR,
676 NCSN_LISTV_ITEMDBCLK,
680 NCSN_LISTV_UNFOLDITEM,
691 MGNCS_EXPORT
extern mListViewClass g_stmListViewCls;
699 #endif //_MGNCSCTRL_LISTVIEW
The structure of mItemView control, which derived from mScrollWidget. It is the abstract superclass o...