Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

315 lines
5.1 KiB

//============================================================================
// Copyright (c) 1995, Microsoft Corporation
//
// File: tldef.h
//
// History:
// Abolade Gbadegesin Nov-20-1995 Created.
//
// Private implementation declarations for TreeList control.
//============================================================================
#ifndef _TLDEF_H_
#define _TLDEF_H_
typedef struct _TLITEM {
struct _TLITEM *pParent;
LIST_ENTRY leSiblings;
LIST_ENTRY lhChildren;
LIST_ENTRY lhSubitems;
INT iLevel;
INT iIndex;
UINT nChildren;
LV_ITEM lvi;
PTSTR pszText;
LPARAM lParam;
INT iImage;
UINT uiFlag;
} TLITEM;
typedef struct _TLSUBITEM {
LIST_ENTRY leItems;
DWORD dwFlags;
INT iSubItem;
PTSTR pszText;
} TLSUBITEM;
typedef struct _TL {
HWND hwnd;
UINT iCtrlId;
HWND hwndList;
HWND hwndParent;
TLITEM root;
UINT nColumns;
UINT cyItem;
UINT cyText;
UINT cxIndent;
HDC hdcImages;
HBITMAP hbmp;
HBITMAP hbmpMem;
UINT cxBmp;
UINT cyBmp;
HBITMAP hbmpStart;
HBRUSH hbrBk;
} TL;
#define TLI_EXPANDED 0x0001
#define TL_ICONCOUNT (IID_TL_IconLast - IID_TL_IconBase + 1)
#define TL_ICONID(index) ((index) + IID_TL_IconBase)
#define TL_ICONINDEX(id) ((id) - IID_TL_IconBase)
#define TL_GetPtr(hwnd) (TL *)GetWindowLongPtr((hwnd), 0)
#define TL_SetPtr(hwnd,ptr) (TL *)SetWindowLongPtr((hwnd), 0, (ULONG_PTR)(ptr))
#define TL_StateImageValue(p) (((p)->lvi.state >> 12) & 0xf)
#define TL_StateImageIndex(p) (TL_StateImageValue(p) - 1)
#define TL_IsExpanded(p) ((p)->uiFlag & TLI_EXPANDED)
#define TL_IsVisible(p) ((p)->iIndex != -1)
#define TL_VerticalLine 0
#define TL_RootChildless 1
#define TL_RootParentCollapsed 2
#define TL_RootParentExpanded 3
#define TL_MidChildless 4
#define TL_MidParentCollapsed 5
#define TL_MidParentExpanded 6
#define TL_EndChildless 7
#define TL_EndParentCollapsed 8
#define TL_EndParentExpanded 9
#define TL_ImageCount 10
LRESULT
CALLBACK
TL_WndProc(
HWND hwnd,
UINT uiMsg,
WPARAM wParam,
LPARAM lParam
);
BOOL
TL_OnCreate(
TL *ptl,
CREATESTRUCT *pcs
);
VOID
TL_OnDestroy(
TL *ptl
);
BOOL
TL_NotifyParent(
TL *ptl,
NMHDR *pnmh
);
LRESULT
TL_OnNotify(
TL *ptl,
INT iCtrlId,
NMHDR *pnmh
);
HTLITEM
TL_OnInsertItem(
TL *ptl,
TL_INSERTSTRUCT *ptlis
);
BOOL
TL_OnDeleteItem(
TL *ptl,
HTLITEM hitem
);
BOOL
TL_OnDeleteAllItems(
TL *ptl
);
VOID
TL_DeleteAndNotify(
TL *ptl,
TLITEM *pItem
);
BOOL
TL_OnGetItem(
TL *ptl,
LV_ITEM *plvi
);
BOOL
TL_OnSetItem(
TL *ptl,
LV_ITEM *plvi
);
UINT
TL_OnGetItemCount(
TL *ptl
);
HTLITEM
TL_OnGetNextItem(
TL *ptl,
UINT uiFlag,
HTLITEM hItem
);
#define TL_Enumerate(ptl,pitem) \
TL_OnGetNextItem((ptl), TLGN_ENUMERATE, (HTLITEM)(pitem))
BOOL
TL_OnExpand(
TL *ptl,
UINT uiFlag,
HTLITEM hItem
);
BOOL
TL_ItemExpand(
TL *ptl,
TLITEM *pItem
);
BOOL
TL_ItemCollapse(
TL *ptl,
TLITEM *pItem
);
INT
TL_OnInsertColumn(
TL *ptl,
INT iCol,
LV_COLUMN *pCol
);
BOOL
TL_OnDeleteColumn(
TL *ptl,
INT iCol
);
BOOL
TL_OnSetSelection(
TL *ptl,
HTLITEM hItem
);
VOID
TL_OnWindowPosChanged(
TL *ptl,
WINDOWPOS *pwp
);
VOID
TL_OnEraseBackground(
TL *ptl,
HDC hdc
);
BOOL
TL_OnDrawItem(
TL *ptl,
CONST DRAWITEMSTRUCT *pdis
);
BOOL
TL_DrawItem(
TL *ptl,
CONST DRAWITEMSTRUCT *pdis
);
VOID
TL_OnMeasureItem(
TL *ptl,
MEASUREITEMSTRUCT *pmis
);
HBITMAP
TL_CreateColorBitmap(
INT cx,
INT cy
);
VOID
TL_CreateTreeImages(
TL *ptl
);
VOID
TL_DottedLine(
HDC hdc,
INT x,
INT y,
INT dim,
BOOL fVertical
);
VOID
TL_DrawButton(
HDC hdc,
INT x,
INT y,
INT dim,
HBRUSH hbrSign,
HBRUSH hbrBox,
HBRUSH hbrBk,
BOOL bCollapsed
);
VOID
TL_UpdateListIndices(
TL *ptl,
TLITEM *pStart
);
VOID
TL_UpdateDescendantIndices(
TL *ptl,
TLITEM *pStart,
INT *piIndex
);
VOID
TL_UpdateAncestorIndices(
TL *ptl,
TLITEM *pStart,
INT *piIndex
);
VOID
TL_UpdateImage(
TL *ptl,
TLITEM *pItem,
TLITEM **ppChanged
);
VOID
TL_CountItems(
TLITEM *pParent,
INT *piCount
);
BOOL
TL_OnRedraw(
TL *ptl
);
#endif