4 * Copyright 1998 Eric Kohl
7 * This is just a dummy control. An author is needed! Any volunteers?
8 * I will only improve this control once in a while.
9 * Eric <ekohl@abo.rhein-zeitung.de>
13 * - All notifications.
24 #define TREEVIEW_GetInfoPtr(wndPtr) ((TREEVIEW_INFO *)wndPtr->wExtra[0])
29 TREEVIEW_GetImageList (WND
*wndPtr
, WPARAM32 wParam
, LPARAM lParam
)
31 TREEVIEW_INFO
*infoPtr
= TREEVIEW_GetInfoPtr(wndPtr
);
33 switch ((INT32
)wParam
) {
35 return (LRESULT
)infoPtr
->himlNormal
;
38 return (LRESULT
)infoPtr
->himlState
;
48 TREEVIEW_SetImageList (WND
*wndPtr
, WPARAM32 wParam
, LPARAM lParam
)
50 TREEVIEW_INFO
*infoPtr
= TREEVIEW_GetInfoPtr(wndPtr
);
53 switch ((INT32
)wParam
) {
55 himlTemp
= infoPtr
->himlNormal
;
56 infoPtr
->himlNormal
= (HIMAGELIST
)lParam
;
57 return (LRESULT
)himlTemp
;
60 himlTemp
= infoPtr
->himlState
;
61 infoPtr
->himlState
= (HIMAGELIST
)lParam
;
62 return (LRESULT
)himlTemp
;
71 TREEVIEW_Create (WND
*wndPtr
, WPARAM32 wParam
, LPARAM lParam
)
73 TREEVIEW_INFO
*infoPtr
;
75 /* allocate memory for info structure */
76 infoPtr
= (TREEVIEW_INFO
*)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY
,
77 sizeof(TREEVIEW_INFO
));
78 wndPtr
->wExtra
[0] = (DWORD
)infoPtr
;
80 if (infoPtr
== NULL
) {
81 ERR (treeview
, "could not allocate info memory!\n");
85 if ((TREEVIEW_INFO
*)wndPtr
->wExtra
[0] != infoPtr
) {
86 ERR (treeview
, "pointer assignment error!\n");
90 /* set default settings */
91 infoPtr
->clrBk
= GetSysColor32 (COLOR_WINDOW
);
92 infoPtr
->clrText
= GetSysColor32 (COLOR_BTNTEXT
);
93 infoPtr
->himlNormal
= NULL
;
94 infoPtr
->himlState
= NULL
;
102 TREEVIEW_Destroy (WND
*wndPtr
, WPARAM32 wParam
, LPARAM lParam
)
104 TREEVIEW_INFO
*infoPtr
= TREEVIEW_GetInfoPtr(wndPtr
);
109 /* free tree view info data */
110 HeapFree (GetProcessHeap (), 0, infoPtr
);
117 TREEVIEW_EraseBackground (WND
*wndPtr
, WPARAM32 wParam
, LPARAM lParam
)
119 TREEVIEW_INFO
*infoPtr
= TREEVIEW_GetInfoPtr(wndPtr
);
120 HBRUSH32 hBrush
= CreateSolidBrush32 (infoPtr
->clrBk
);
123 GetClientRect32 (wndPtr
->hwndSelf
, &rect
);
124 FillRect32 ((HDC32
)wParam
, &rect
, hBrush
);
125 DeleteObject32 (hBrush
);
132 TREEVIEW_WindowProc (HWND32 hwnd
, UINT32 uMsg
, WPARAM32 wParam
, LPARAM lParam
)
134 WND
*wndPtr
= WIN_FindWndPtr(hwnd
);
139 case TVM_INSERTITEM32A
:
140 FIXME (treeview
, "Unimplemented msg TVM_INSERTITEM32A\n");
143 case TVM_INSERTITEM32W
:
144 FIXME (treeview
, "Unimplemented msg TVM_INSERTITEM32W\n");
148 FIXME (treeview
, "Unimplemented msg TVM_DELETEITEM\n");
152 FIXME (treeview
, "Unimplemented msg TVM_EXPAND\n");
155 case TVM_GETITEMRECT
:
156 FIXME (treeview
, "Unimplemented msg TVM_GETITEMRECT\n");
160 FIXME (treeview
, "Unimplemented msg TVM_GETCOUNT\n");
164 FIXME (treeview
, "Unimplemented msg TVM_GETINDENT\n");
168 FIXME (treeview
, "Unimplemented msg TVM_SETINDENT\n");
171 case TVM_GETIMAGELIST
:
172 return TREEVIEW_GetImageList (wndPtr
, wParam
, lParam
);
174 case TVM_SETIMAGELIST
:
175 return TREEVIEW_SetImageList (wndPtr
, wParam
, lParam
);
177 case TVM_GETNEXTITEM
:
178 FIXME (treeview
, "Unimplemented msg TVM_GETNEXTITEM\n");
182 FIXME (treeview
, "Unimplemented msg TVM_SELECTITEM \n");
186 FIXME (treeview
, "Unimplemented msg TVM_GETITEM32A\n");
190 FIXME (treeview
, "Unimplemented msg TVM_GETITEM32W\n");
194 FIXME (treeview
, "Unimplemented msg TVM_SETITEM32A\n");
198 FIXME (treeview
, "Unimplemented msg TVM_SETITEM32W\n");
201 case TVM_EDITLABEL32A
:
202 FIXME (treeview
, "Unimplemented msg TVM_EDITLABEL32A\n");
205 case TVM_EDITLABEL32W
:
206 FIXME (treeview
, "Unimplemented msg TVM_EDITLABEL32W\n");
209 case TVM_GETEDITCONTROL
:
210 FIXME (treeview
, "Unimplemented msg TVM_GETEDITCONTROL\n");
213 case TVM_GETVISIBLECOUNT
:
214 FIXME (treeview
, "Unimplemented msg TVM_GETVISIBLECOUNT\n");
218 FIXME (treeview
, "Unimplemented msg TVM_HITTEST\n");
221 case TVM_CREATEDRAGIMAGE
:
222 FIXME (treeview
, "Unimplemented msg TVM_CREATEDRAGIMAGE\n");
225 case TVM_SORTCHILDREN
:
226 FIXME (treeview
, "Unimplemented msg TVM_SORTCHILDREN\n");
229 case TVM_ENSUREVISIBLE
:
230 FIXME (treeview
, "Unimplemented msg TVM_ENSUREVISIBLE\n");
233 case TVM_SORTCHILDRENCB
:
234 FIXME (treeview
, "Unimplemented msg TVM_SORTCHILDRENCB\n");
237 case TVM_ENDEDITLABELNOW
:
238 FIXME (treeview
, "Unimplemented msg TVM_ENDEDITLABELNOW\n");
241 case TVM_GETISEARCHSTRING32A
:
242 FIXME (treeview
, "Unimplemented msg TVM_GETISEARCHSTRING32A\n");
245 case TVM_GETISEARCHSTRING32W
:
246 FIXME (treeview
, "Unimplemented msg TVM_GETISEARCHSTRING32W\n");
249 case TVM_SETTOOLTIPS
:
250 FIXME (treeview
, "Unimplemented msg TVM_SETTOOLTIPS\n");
253 case TVM_GETTOOLTIPS
:
254 FIXME (treeview
, "Unimplemented msg TVM_GETTOOLTIPS\n");
258 return TREEVIEW_Create (wndPtr
, wParam
, lParam
);
261 return TREEVIEW_Destroy (wndPtr
, wParam
, lParam
);
266 return TREEVIEW_EraseBackground (wndPtr
, wParam
, lParam
);
269 return DLGC_WANTARROWS
| DLGC_WANTCHARS
;
272 // return TREEVIEW_Paint (wndPtr, wParam);
282 FIXME (treeview
, "Unknown msg %04x wp=%08x lp=%08lx\n",
283 uMsg
, wParam
, lParam
);
284 return DefWindowProc32A (hwnd
, uMsg
, wParam
, lParam
);
291 TREEVIEW_Register (void)
293 WNDCLASS32A wndClass
;
295 TRACE (treeview
,"\n");
297 if (GlobalFindAtom32A (WC_TREEVIEW32A
)) return;
299 ZeroMemory (&wndClass
, sizeof(WNDCLASS32A
));
300 wndClass
.style
= CS_GLOBALCLASS
| CS_DBLCLKS
;
301 wndClass
.lpfnWndProc
= (WNDPROC32
)TREEVIEW_WindowProc
;
302 wndClass
.cbClsExtra
= 0;
303 wndClass
.cbWndExtra
= sizeof(TREEVIEW_INFO
*);
304 wndClass
.hCursor
= LoadCursor32A (0, IDC_ARROW32A
);
305 wndClass
.hbrBackground
= 0;
306 wndClass
.lpszClassName
= WC_TREEVIEW32A
;
308 RegisterClass32A (&wndClass
);