Alexandre Julliard | 642d313 | 1998-07-12 19:29:36 +0000 | [diff] [blame] | 1 | /* |
| 2 | * Treeview class extra info |
| 3 | * |
| 4 | * Copyright 1998 Eric Kohl |
Alexandre Julliard | d30dfd2 | 1998-09-27 18:28:36 +0000 | [diff] [blame] | 5 | * Copyright 1998 Alex Priem |
Alexandre Julliard | 642d313 | 1998-07-12 19:29:36 +0000 | [diff] [blame] | 6 | */ |
| 7 | |
| 8 | #ifndef __WINE_TREEVIEW_H |
| 9 | #define __WINE_TREEVIEW_H |
| 10 | |
Sylvain St.Germain | 99b118a | 1999-03-25 10:55:01 +0000 | [diff] [blame] | 11 | #include "commctrl.h" |
| 12 | |
Alexandre Julliard | d30dfd2 | 1998-09-27 18:28:36 +0000 | [diff] [blame] | 13 | #define MINIMUM_INDENT 10 |
Alexandre Julliard | d30dfd2 | 1998-09-27 18:28:36 +0000 | [diff] [blame] | 14 | #define TV_REFRESH_DELAY 100 /* 100 ms delay between two refreshes */ |
Alex Priem | d2d7f96 | 1999-01-30 13:02:30 +0000 | [diff] [blame] | 15 | #define TV_DEFAULTITEMHEIGHT 16 |
| 16 | #define TVITEM_ALLOC 16 /* default nr of items to allocate at first try */ |
| 17 | |
Alexandre Julliard | d30dfd2 | 1998-09-27 18:28:36 +0000 | [diff] [blame] | 18 | |
| 19 | /* internal structures */ |
| 20 | |
| 21 | typedef struct { |
Sylvain St.Germain | 02300ae | 1999-03-16 10:38:44 +0000 | [diff] [blame] | 22 | UINT mask; |
| 23 | HTREEITEM hItem; |
| 24 | UINT state; |
| 25 | UINT stateMask; |
| 26 | LPSTR pszText; |
| 27 | int cchTextMax; |
| 28 | int iImage; |
| 29 | int iSelectedImage; |
| 30 | int cChildren; |
| 31 | LPARAM lParam; |
| 32 | int iIntegral; |
| 33 | int iLevel; /* indentation level:0=root level */ |
| 34 | COLORREF clrText; |
| 35 | HTREEITEM parent; /* handle to parent or 0 if at root*/ |
| 36 | HTREEITEM firstChild; /* handle to first child or 0 if no child*/ |
| 37 | HTREEITEM sibling; /* handle to next item in list, 0 if last */ |
| 38 | HTREEITEM upsibling; /* handle to previous item in list, 0 if first */ |
| 39 | int visible; |
| 40 | RECT rect; |
| 41 | RECT text; |
| 42 | RECT expandBox; /* expand box (+/-) coordinate */ |
Alex Priem | e6e71ad | 1999-11-28 19:50:01 +0000 | [diff] [blame] | 43 | RECT bitmap; |
| 44 | RECT statebitmap; |
Alexandre Julliard | d30dfd2 | 1998-09-27 18:28:36 +0000 | [diff] [blame] | 45 | } TREEVIEW_ITEM; |
| 46 | |
| 47 | |
Alexandre Julliard | 642d313 | 1998-07-12 19:29:36 +0000 | [diff] [blame] | 48 | typedef struct tagTREEVIEW_INFO |
| 49 | { |
Sylvain St.Germain | 02300ae | 1999-03-16 10:38:44 +0000 | [diff] [blame] | 50 | UINT uInternalStatus; |
| 51 | UINT bAutoSize; /* merge with uInternalStatus */ |
| 52 | INT Timer; |
| 53 | UINT uNumItems; /* number of valid TREEVIEW_ITEMs */ |
| 54 | UINT uNumPtrsAlloced; |
| 55 | HTREEITEM uMaxHandle; /* needed for delete_item */ |
| 56 | HTREEITEM TopRootItem; /* handle to first item in treeview */ |
| 57 | INT cdmode; /* last custom draw setting */ |
Eric Kohl | f9b5807 | 1999-07-31 13:09:40 +0000 | [diff] [blame] | 58 | UINT uScrollTime; /* max. time for scrolling in milliseconds*/ |
Sylvain St.Germain | 02300ae | 1999-03-16 10:38:44 +0000 | [diff] [blame] | 59 | UINT uItemHeight; /* item height, -1 for default item height */ |
| 60 | UINT uRealItemHeight;/* current item height in pixels */ |
| 61 | UINT uVisibleHeight; /* visible height of treeview in pixels */ |
| 62 | UINT uTotalHeight; /* total height of treeview in pixels */ |
| 63 | UINT uVisibleWidth; |
| 64 | UINT uTotalWidth; |
| 65 | UINT uIndent; /* indentation in pixels */ |
| 66 | HTREEITEM selectedItem; /* handle to selected item or 0 if none */ |
| 67 | HTREEITEM focusItem; /* handle to item that has focus, 0 if none */ |
| 68 | HTREEITEM hotItem; /* handle currently under cursor, 0 if none */ |
| 69 | HTREEITEM editItem; /* handle to item currently editted, 0 if none */ |
| 70 | HTREEITEM firstVisible; /* handle to first visible item */ |
| 71 | HTREEITEM dropItem; /* handle to item selected by drag cursor */ |
Alex Priem | e6e71ad | 1999-11-28 19:50:01 +0000 | [diff] [blame] | 72 | HTREEITEM insertMarkItem; /* item after which insertion mark is placed */ |
| 73 | BOOL insertBeforeorAfter; /* flag used by TVM_SETINSERTMARK */ |
Sylvain St.Germain | 02300ae | 1999-03-16 10:38:44 +0000 | [diff] [blame] | 74 | HIMAGELIST dragList; /* Bitmap of dragged item */ |
| 75 | INT cx,cy; /* current x/y place in list */ |
| 76 | COLORREF clrBk; |
| 77 | COLORREF clrText; |
Alex Priem | e74f219 | 1999-07-18 18:31:05 +0000 | [diff] [blame] | 78 | COLORREF clrLine; |
Alex Priem | e6e71ad | 1999-11-28 19:50:01 +0000 | [diff] [blame] | 79 | COLORREF clrInsertMark; |
Sylvain St.Germain | 02300ae | 1999-03-16 10:38:44 +0000 | [diff] [blame] | 80 | HFONT hFont; |
| 81 | HFONT hBoldFont; |
| 82 | HWND hwndToolTip; |
| 83 | HWND hwndEdit; |
| 84 | WNDPROC wpEditOrig; /* needed for subclassing edit control */ |
| 85 | HIMAGELIST himlNormal; |
| 86 | HIMAGELIST himlState; |
Sylvain St.Germain | 99b118a | 1999-03-25 10:55:01 +0000 | [diff] [blame] | 87 | LPTVSORTCB pCallBackSort; /* ptr to TVSORTCB struct for callback sorting */ |
Sylvain St.Germain | 02300ae | 1999-03-16 10:38:44 +0000 | [diff] [blame] | 88 | TREEVIEW_ITEM *items; /* itemlist */ |
| 89 | INT *freeList; /* bitmap indicating which elements are valid */ |
| 90 | /* 1=valid, 0=free; */ |
| 91 | /* size of list= uNumPtrsAlloced/32 */ |
Alexandre Julliard | 642d313 | 1998-07-12 19:29:36 +0000 | [diff] [blame] | 92 | } TREEVIEW_INFO; |
| 93 | |
| 94 | |
Alex Priem | d2d7f96 | 1999-01-30 13:02:30 +0000 | [diff] [blame] | 95 | |
| 96 | /* bitflags for infoPtr->uInternalStatus */ |
| 97 | |
| 98 | #define TV_HSCROLL 0x01 /* treeview too large to fit in window */ |
| 99 | #define TV_VSCROLL 0x02 /* (horizontal/vertical) */ |
| 100 | #define TV_LDRAG 0x04 /* Lbutton pushed to start drag */ |
| 101 | #define TV_LDRAGGING 0x08 /* Lbutton pushed, mouse moved. */ |
| 102 | #define TV_RDRAG 0x10 /* dito Rbutton */ |
| 103 | #define TV_RDRAGGING 0x20 |
| 104 | |
| 105 | /* bitflags for infoPtr->timer */ |
| 106 | |
| 107 | #define TV_REFRESH_TIMER 1 |
| 108 | #define TV_EDIT_TIMER 2 |
| 109 | #define TV_REFRESH_TIMER_SET 1 |
| 110 | #define TV_EDIT_TIMER_SET 2 |
| 111 | |
| 112 | |
Eric Kohl | 9d8e864 | 1998-10-24 10:49:27 +0000 | [diff] [blame] | 113 | extern VOID TREEVIEW_Register (VOID); |
| 114 | extern VOID TREEVIEW_Unregister (VOID); |
Alexandre Julliard | 642d313 | 1998-07-12 19:29:36 +0000 | [diff] [blame] | 115 | |
| 116 | #endif /* __WINE_TREEVIEW_H */ |