//============================================================================ // 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