1 /* Unit tests for treeview.
3 * Copyright 2005 Krzysztof Foltman
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
31 #include "wine/test.h"
36 static HTREEITEM hRoot
, hChild
;
39 static char sequence
[256];
41 static void Clear(void)
47 static void AddItem(char ch
)
53 static void IdentifyItem(HTREEITEM hItem
)
59 if (hItem
== hChild
) {
70 static void FillRoot(void)
76 ins
.hParent
= TVI_ROOT
;
77 ins
.hInsertAfter
= TVI_ROOT
;
78 U(ins
).item
.mask
= TVIF_TEXT
;
79 U(ins
).item
.pszText
= "Root";
80 hRoot
= TreeView_InsertItem(hTree
, &ins
);
85 ins
.hInsertAfter
= TVI_FIRST
;
86 U(ins
).item
.mask
= TVIF_TEXT
;
87 U(ins
).item
.pszText
= "Child";
88 hChild
= TreeView_InsertItem(hTree
, &ins
);
92 ok(!strcmp(sequence
, "AB."), "Item creation\n");
95 static void DoTest1(void)
97 TreeView_SelectItem(hTree
, NULL
);
100 TreeView_SelectItem(hTree
, hRoot
);
102 TreeView_SelectItem(hTree
, hRoot
);
104 TreeView_SelectItem(hTree
, NULL
);
106 TreeView_SelectItem(hTree
, NULL
);
108 TreeView_SelectItem(hTree
, hRoot
);
110 ok(!strcmp(sequence
, "1(nR)nR23(Rn)Rn45(nR)nR."), "root-none select test\n");
113 static void DoTest2(void)
115 TreeView_SelectItem(hTree
, NULL
);
118 TreeView_SelectItem(hTree
, hRoot
);
120 TreeView_SelectItem(hTree
, hRoot
);
122 TreeView_SelectItem(hTree
, hChild
);
124 TreeView_SelectItem(hTree
, hChild
);
126 TreeView_SelectItem(hTree
, hRoot
);
128 ok(!strcmp(sequence
, "1(nR)nR23(RC)RC45(CR)CR."), "root-child select test\n");
131 LRESULT CALLBACK
MyWndProc(HWND hWnd
, UINT msg
, WPARAM wParam
, LPARAM lParam
)
137 hTree
= CreateWindowExA(WS_EX_CLIENTEDGE
, WC_TREEVIEWA
, NULL
, WS_CHILD
|WS_VISIBLE
|
138 TVS_LINESATROOT
|TVS_HASLINES
|TVS_HASBUTTONS
,
139 0, 0, 300, 50, hWnd
, (HMENU
)100, GetModuleHandleA(0), 0);
146 NMHDR
*pHdr
= (NMHDR
*)lParam
;
148 if (pHdr
->idFrom
== 100) {
149 NMTREEVIEWA
*pTreeView
= (LPNMTREEVIEWA
) lParam
;
151 case TVN_SELCHANGINGA
:
153 IdentifyItem(pTreeView
->itemOld
.hItem
);
154 IdentifyItem(pTreeView
->itemNew
.hItem
);
156 case TVN_SELCHANGEDA
:
158 IdentifyItem(pTreeView
->itemOld
.hItem
);
159 IdentifyItem(pTreeView
->itemNew
.hItem
);
167 MoveWindow(hTree
, 0, 0, LOWORD(lParam
), HIWORD(lParam
), TRUE
);
175 return DefWindowProcA(hWnd
, msg
, wParam
, lParam
);
184 INITCOMMONCONTROLSEX icex
;
187 icex
.dwSize
= sizeof(INITCOMMONCONTROLSEX
);
188 icex
.dwICC
= ICC_TREEVIEW_CLASSES
;
189 InitCommonControlsEx(&icex
);
191 wc
.style
= CS_HREDRAW
| CS_VREDRAW
;
194 wc
.hInstance
= GetModuleHandleA(NULL
);
196 wc
.hCursor
= LoadCursorA(NULL
, MAKEINTRESOURCEA(IDC_IBEAM
));
197 wc
.hbrBackground
= GetSysColorBrush(COLOR_WINDOW
);
198 wc
.lpszMenuName
= NULL
;
199 wc
.lpszClassName
= "MyTestWnd";
200 wc
.lpfnWndProc
= MyWndProc
;
204 hMainWnd
= CreateWindowExA(0, "MyTestWnd", "Blah", WS_OVERLAPPEDWINDOW
,
205 CW_USEDEFAULT
, CW_USEDEFAULT
, 680, 260, NULL
, NULL
, GetModuleHandleA(NULL
), 0);
206 GetClientRect(hMainWnd
, &rc
);
212 PostMessageA(hMainWnd
, WM_CLOSE
, 0, 0);
213 while(GetMessageA(&msg
,0,0,0)) {
214 TranslateMessage(&msg
);
215 DispatchMessageA(&msg
);