📄 treelist.h
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
TreeList.h - header for TreeList custom control
$Id: TreeList.h,v 1.19 2002/10/09 15:03:51 pbj Exp $
____________________________________________________________________________*/
// This file partially derived from COMMCTRL.H by Microsoft Corp.
#ifndef _INC_TREELIST
#define _INC_TREELIST
#ifndef NOUSER
//
// Define API decoration for direct importing of DLL references.
//
#ifndef WINCOMMCTRLAPI
#if !defined(_COMCTL32_) && defined(_WIN32)
#define WINCOMMCTRLAPI DECLSPEC_IMPORT
#else
#define WINCOMMCTRLAPI
#endif
#endif // WINCOMMCTRLAPI
//
// For compilers that don't support nameless unions
//
#ifndef DUMMYUNIONNAME
#ifdef NONAMELESSUNION
#define DUMMYUNIONNAME u
#define DUMMYUNIONNAME2 u2
#define DUMMYUNIONNAME3 u3
#else
#define DUMMYUNIONNAME
#define DUMMYUNIONNAME2
#define DUMMYUNIONNAME3
#endif
#endif // DUMMYUNIONNAME
#ifdef _WIN32
#include <pshpack1.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
//===========================================================================
//
// Users of this header may define any number of these constants to avoid
// the definitions of each functional group.
//
// NOTREELIST Custom control which is hybrid of TreeView and ListView
//
//===========================================================================
#include <prsht.h>
#ifdef __cplusplus
#define SNDMSG ::SendMessage
#else
#define SNDMSG SendMessage
#endif
void WINAPI InitTreeListControl (void);
//====== Ranges for control message IDs =====================================
#define TLM_FIRST 0x1000 // TreeList messages
//====== WM_NOTIFY codes (NMHDR.code values) ================================
#define TLN_FIRST (0U-100U)
#define TLN_LAST (0U-199U)
//====== TREELIST CONTROL ===================================================
#ifndef NOTREELIST
#ifdef _WIN32
#define WC_TREELISTA "TreeListCtrl32"
#define WC_TREELISTW L"TreeListCtrl32"
#ifdef UNICODE
#define WC_TREELIST WC_TREELISTW
#else
#define WC_TREELIST WC_TREELISTA
#endif
#else
#define WC_TREELIST "TreeListCtrl"
#endif
#define TLS_HASBUTTONS 0x0001
#define TLS_HASLINES 0x0002
#define TLS_LINESATROOT 0x0004
#define TLS_AUTOSCROLL 0x0008
#define TLS_PROMISCUOUS 0x0010
#define TLS_SINGLESELECT 0x0020
#define TLS_INTERNALDRAG 0x0040
#define TLS_DRAGABLEHEADERS 0x0080
#define TLS_SHOWSELECTIONALWAYS 0x0100
#define TLS_DRAGSELECTION 0x0200
#define TLS_USEDEFAULTGUIFONT 0x0400
#define TLS_NOSORTHEADER 0x0800
#define TLS_DROPBETWEEN 0x1000
#define TLS_TOOLTIPNOTIFY 0x2000
typedef struct _TLITEM FAR* HTLITEM;
#define TLIF_TEXT 0x0001
#define TLIF_IMAGE 0x0002
#define TLIF_PARAM 0x0004
#define TLIF_STATE 0x0008
#define TLIF_HANDLE 0x0010
#define TLIF_DATAVALUE 0x0020
#define TLIF_NEXTHANDLE 0x0040
#define TLIF_PARENTHANDLE 0x0080
#define TLIF_PREVHANDLE 0x0100
#define TLIF_CHILDHANDLE 0x0200
#define TLIS_FOCUSED 0x0001
#define TLIS_SELECTED 0x0002
#define TLIS_EXPANDED 0x0004
#define TLIS_BOLD 0x0008
#define TLIS_ITALICS 0x0010
#define TLIS_CLICKED 0x0020
#define TLIS_VISIBLE 0x0080
#define TLIS_DRAGGEDOVER 0x0100
#define TLIS_TRUNCATED 0x0200
#define TLIS_ANIMATED 0x0400
#define TLIS_DRAGGEDBEFORE 0x0800
#define TLIS_DRAGGEDAFTER 0x1000
#define TLIS_DROPONALLOWED 0x2000
typedef struct _TL_TREEITEMA {
UINT mask;
HTLITEM hItem;
UINT state;
UINT stateMask;
LPSTR pszText;
int cchTextMax;
int iImage;
int iSelectedImage;
int cChildren;
LPARAM lParam;
} TL_TREEITEMA, FAR *LPTL_TREEITEMA;
typedef struct _TL_TREEITEMW {
UINT mask;
HTLITEM hItem;
UINT state;
UINT stateMask;
LPWSTR pszText;
int cchTextMax;
int iImage;
int iSelectedImage;
int cChildren;
LPARAM lParam;
} TL_TREEITEMW, FAR *LPTL_TREEITEMW;
#ifdef UNICODE
#define TL_TREEITEM TL_TREEITEMW
#define LPTL_TREEITEM LPTL_TREEITEMW
#else
#define TL_TREEITEM TL_TREEITEMA
#define LPTL_TREEITEM LPTL_TREEITEMA
#endif
#define TLI_ROOT ((HTLITEM)0xFFFF0000)
#define TLI_FIRST ((HTLITEM)0xFFFF0001)
#define TLI_LAST ((HTLITEM)0xFFFF0002)
#define TLI_SORT ((HTLITEM)0xFFFF0003)
#define TLI_SORTREVERSE ((HTLITEM)0xFFFF0004)
typedef struct _TL_INSERTSTRUCTA {
HTLITEM hParent;
HTLITEM hInsertAfter;
TL_TREEITEMA item;
} TL_INSERTSTRUCTA, FAR *LPTL_INSERTSTRUCTA;
typedef struct _TL_INSERTSTRUCTW {
HTLITEM hParent;
HTLITEM hInsertAfter;
TL_TREEITEMW item;
} TL_INSERTSTRUCTW, FAR *LPTL_INSERTSTRUCTW;
#ifdef UNICODE
#define TL_INSERTSTRUCT TL_INSERTSTRUCTW
#define LPTL_INSERTSTRUCT LPTL_INSERTSTRUCTW
#else
#define TL_INSERTSTRUCT TL_INSERTSTRUCTA
#define LPTL_INSERTSTRUCT LPTL_INSERTSTRUCTA
#endif
#define TLM_INSERTITEMA (TLM_FIRST + 0)
#define TLM_INSERTITEMW (TLM_FIRST + 50)
#ifdef UNICODE
#define TLM_INSERTITEM TLM_INSERTITEMW
#else
#define TLM_INSERTITEM TLM_INSERTITEMA
#endif
#define TreeList_InsertItem(hwnd, lpis) \
(HTLITEM)SNDMSG((hwnd), TLM_INSERTITEM, 0, \
(LPARAM)(LPTL_INSERTSTRUCT)(lpis))
#define TLM_REINSERTITEMA (TLM_FIRST + 4)
#define TLM_REINSERTITEMW (TLM_FIRST + 54)
#ifdef UNICODE
#define TLM_REINSERTITEM TLM_REINSERTITEMW
#else
#define TLM_REINSERTITEM TLM_REINSERTITEMA
#endif
#define TreeList_ReInsertItem(hwnd, lpis) \
(HTLITEM)SNDMSG((hwnd), TLM_REINSERTITEM, 0, \
(LPARAM)(LPTL_INSERTSTRUCT)(lpis))
#define TLM_DELETETREE (TLM_FIRST + 3)
#define TreeList_DeleteTree(hwnd, bFree) \
(BOOL)SNDMSG((hwnd), TLM_DELETETREE, bFree, 0)
#define TLM_DELETEITEM (TLM_FIRST + 1)
#define TreeList_DeleteItem(hwnd, pitem) \
(BOOL)SNDMSG((hwnd), TLM_DELETEITEM, 0, (LPARAM)(TL_TREEITEM FAR*)(pitem))
#define TLM_DELETECHILDREN (TLM_FIRST + 10)
#define TreeList_DeleteChildren(hwnd, pitem) \
(BOOL)SNDMSG((hwnd), TLM_DELETECHILDREN, 0, \
(LPARAM)(TL_TREEITEM FAR*)(pitem))
#define TLM_EXPAND (TLM_FIRST + 2)
#define TreeList_Expand(hwnd, hitem, code) \
(BOOL)SNDMSG((hwnd), TLM_EXPAND, (WPARAM)code, \
(LPARAM)(HTLITEM)(hitem))
#define TLE_COLLAPSE 0x0001
#define TLE_EXPAND 0x0002
#define TLE_TOGGLE 0x0003
#define TLE_COLLAPSEALL 0x0004
#define TLE_EXPANDALL 0x0005
#define TLM_SETIMAGELIST (TLM_FIRST + 9)
#define TreeList_SetImageList(hwnd, himl) \
(HIMAGELIST)SNDMSG((hwnd), TLM_SETIMAGELIST, 0, \
(LPARAM)(UINT)(HIMAGELIST)(himl))
#define TLM_SELECTITEM (TLM_FIRST + 11)
#define TreeList_Select(hwnd, hitem, bdeselect) \
(HTLITEM)SNDMSG((hwnd), TLM_SELECTITEM, (WPARAM)bdeselect, \
(LPARAM)(HTLITEM)(hitem))
#define TLM_DRAGOVER (TLM_FIRST + 14)
#define TreeList_DragOver(hwnd, coords) \
(BOOL)SNDMSG((hwnd), TLM_DRAGOVER, 0, (LPARAM)(coords))
#define TLWM_KEEPASPECTRATIO 0x0001
#define TLWM_CONSTANTBKGRND 0x0002
#define TLWM_SHRINKONLY 0x0004
typedef struct _TL_WATERMARK {
HBITMAP hbm;
SIZE size;
int iAlpha; // not currently used
COLORREF crBkgrnd;
ULONG ulFlags;
} TL_WATERMARK, FAR *LPTL_WATERMARK;
#define TLM_SETWATERMARKBMP (TLM_FIRST + 22)
#define TreeList_SetWatermarkBmp(hwnd, lpwm) \
(BOOL)SNDMSG((hwnd), TLM_SETWATERMARKBMP, 0, \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -