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
The structure of mItemView control, which derived from mScrollWidget. It is the abstract superclass o...