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_SetImageList (WND
*wndPtr
, WPARAM32 wParam
, LPARAM lParam
)
31 TREEVIEW_INFO
*infoPtr
= TREEVIEW_GetInfoPtr(wndPtr
);
34 if ((INT32
)wParam
== TVSIL_NORMAL
) {
35 himlTemp
= infoPtr
->himlNormal
;
36 infoPtr
->himlNormal
= (HIMAGELIST
)lParam
;
38 else if ((INT32
)wParam
== TVSIL_STATE
) {
39 himlTemp
= infoPtr
->himlState
;
40 infoPtr
->himlState
= (HIMAGELIST
)lParam
;
45 return (LRESULT
)himlTemp
;
51 TREEVIEW_Create (WND
*wndPtr
, WPARAM32 wParam
, LPARAM lParam
)
53 TREEVIEW_INFO
*infoPtr
;
55 /* allocate memory for info structure */
56 infoPtr
= (TREEVIEW_INFO
*)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY
,
57 sizeof(TREEVIEW_INFO
));
58 wndPtr
->wExtra
[0] = (DWORD
)infoPtr
;
60 if (infoPtr
== NULL
) {
61 ERR (treeview
, "could not allocate info memory!\n");
65 if ((TREEVIEW_INFO
*)wndPtr
->wExtra
[0] != infoPtr
) {
66 ERR (treeview
, "pointer assignment error!\n");
70 /* set default settings */
71 infoPtr
->clrBk
= GetSysColor32 (COLOR_WINDOW
);
72 infoPtr
->clrText
= GetSysColor32 (COLOR_BTNTEXT
);
73 infoPtr
->himlNormal
= NULL
;
74 infoPtr
->himlState
= NULL
;
82 TREEVIEW_Destroy (WND
*wndPtr
, WPARAM32 wParam
, LPARAM lParam
)
84 TREEVIEW_INFO
*infoPtr
= TREEVIEW_GetInfoPtr(wndPtr
);
89 /* free tree view info data */
90 HeapFree (GetProcessHeap (), 0, infoPtr
);
97 TREEVIEW_EraseBackground (WND
*wndPtr
, WPARAM32 wParam
, LPARAM lParam
)
99 TREEVIEW_INFO
*infoPtr
= TREEVIEW_GetInfoPtr(wndPtr
);
100 HBRUSH32 hBrush
= CreateSolidBrush32 (infoPtr
->clrBk
);
103 GetClientRect32 (wndPtr
->hwndSelf
, &rect
);
104 FillRect32 ((HDC32
)wParam
, &rect
, hBrush
);
105 DeleteObject32 (hBrush
);
112 TREEVIEW_WindowProc (HWND32 hwnd
, UINT32 uMsg
, WPARAM32 wParam
, LPARAM lParam
)
114 WND
*wndPtr
= WIN_FindWndPtr(hwnd
);
119 case TVM_INSERTITEMA
:
120 FIXME (treeview
, "Unimplemented msg TVM_INSERTITEMA\n");
123 case TVM_INSERTITEMW
:
124 FIXME (treeview
, "Unimplemented msg TVM_INSERTITEMW\n");
128 FIXME (treeview
, "Unimplemented msg TVM_DELETEITEM\n");
132 FIXME (treeview
, "Unimplemented msg TVM_EXPAND\n");
135 case TVM_GETITEMRECT
:
136 FIXME (treeview
, "Unimplemented msg TVM_GETITEMRECT\n");
140 FIXME (treeview
, "Unimplemented msg TVM_GETCOUNT\n");
144 FIXME (treeview
, "Unimplemented msg TVM_GETINDENT\n");
148 FIXME (treeview
, "Unimplemented msg TVM_SETINDENT\n");
151 case TVM_GETIMAGELIST
:
152 FIXME (treeview
, "Unimplemented msg TVM_GETIMAGELIST\n");
154 //return TREEVIEW_GetImageList (wndPtr, wParam, lParam);
156 case TVM_SETIMAGELIST
:
157 return TREEVIEW_SetImageList (wndPtr
, wParam
, lParam
);
159 case TVM_GETNEXTITEM
:
160 FIXME (treeview
, "Unimplemented msg TVM_GETNEXTITEM\n");
164 FIXME (treeview
, "Unimplemented msg TVM_SELECTITEM \n");
168 FIXME (treeview
, "Unimplemented msg TVM_GETITEMA\n");
172 FIXME (treeview
, "Unimplemented msg TVM_GETITEMW\n");
176 FIXME (treeview
, "Unimplemented msg TVM_SETITEMA\n");
180 FIXME (treeview
, "Unimplemented msg TVM_SETITEMW\n");
184 FIXME (treeview
, "Unimplemented msg TVM_EDITLABELA \n");
188 FIXME (treeview
, "Unimplemented msg TVM_EDITLABELW \n");
191 case TVM_GETEDITCONTROL
:
192 FIXME (treeview
, "Unimplemented msg TVM_GETEDITCONTROL\n");
195 case TVM_GETVISIBLECOUNT
:
196 FIXME (treeview
, "Unimplemented msg TVM_GETVISIBLECOUNT\n");
200 FIXME (treeview
, "Unimplemented msg TVM_HITTEST\n");
203 case TVM_CREATEDRAGIMAGE
:
204 FIXME (treeview
, "Unimplemented msg TVM_CREATEDRAGIMAGE\n");
207 case TVM_SORTCHILDREN
:
208 FIXME (treeview
, "Unimplemented msg TVM_SORTCHILDREN\n");
211 case TVM_ENSUREVISIBLE
:
212 FIXME (treeview
, "Unimplemented msg TVM_ENSUREVISIBLE\n");
215 case TVM_SORTCHILDRENCB
:
216 FIXME (treeview
, "Unimplemented msg TVM_SORTCHILDRENCB\n");
219 case TVM_ENDEDITLABELNOW
:
220 FIXME (treeview
, "Unimplemented msg TVM_ENDEDITLABELNOW\n");
223 case TVM_GETISEARCHSTRINGA
:
224 FIXME (treeview
, "Unimplemented msg TVM_GETISEARCHSTRINGA\n");
227 case TVM_GETISEARCHSTRINGW
:
228 FIXME (treeview
, "Unimplemented msg TVM_GETISEARCHSTRINGW\n");
231 case TVM_SETTOOLTIPS
:
232 FIXME (treeview
, "Unimplemented msg TVM_SETTOOLTIPS\n");
235 case TVM_GETTOOLTIPS
:
236 FIXME (treeview
, "Unimplemented msg TVM_GETTOOLTIPS\n");
240 return TREEVIEW_Create (wndPtr
, wParam
, lParam
);
243 return TREEVIEW_Destroy (wndPtr
, wParam
, lParam
);
248 return TREEVIEW_EraseBackground (wndPtr
, wParam
, lParam
);
251 return DLGC_WANTARROWS
| DLGC_WANTCHARS
;
254 // return TREEVIEW_Paint (wndPtr, wParam);
264 FIXME (treeview
, "Unknown msg %04x wp=%08x lp=%08lx\n",
265 uMsg
, wParam
, lParam
);
266 return DefWindowProc32A (hwnd
, uMsg
, wParam
, lParam
);
273 TREEVIEW_Register (void)
275 WNDCLASS32A wndClass
;
277 TRACE (treeview
,"\n");
279 if (GlobalFindAtom32A (WC_TREEVIEW32A
)) return;
281 ZeroMemory (&wndClass
, sizeof(WNDCLASS32A
));
282 wndClass
.style
= CS_GLOBALCLASS
| CS_DBLCLKS
;
283 wndClass
.lpfnWndProc
= (WNDPROC32
)TREEVIEW_WindowProc
;
284 wndClass
.cbClsExtra
= 0;
285 wndClass
.cbWndExtra
= sizeof(TREEVIEW_INFO
*);
286 wndClass
.hCursor
= LoadCursor32A (0, IDC_ARROW32A
);
287 wndClass
.hbrBackground
= 0;
288 wndClass
.lpszClassName
= WC_TREEVIEW32A
;
290 RegisterClass32A (&wndClass
);