48#define NUM_MSG_SEQUENCES 3
49#define TREEVIEW_SEQ_INDEX 0
50#define PARENT_SEQ_INDEX 1
51#define PARENT_CD_SEQ_INDEX 2
53#define expect(expected, got) ok(got == expected, "Expected %d, got %d\n", expected, got)
62 int min_timeout = 100;
418 static LONG defwndproc_counter = 0;
430 defwndproc_counter++;
432 defwndproc_counter--;
464 U(ins).item.pszText =
root;
470 U(ins).item.pszText =
child;
511 static const CHAR test2A[] =
"TEST2";
541 ok(hItem1 !=
NULL,
"failed to set Item1\n");
559 U(ins).item.pszText =
NULL;
561 ok(hItem2 !=
NULL,
"failed to set Item2\n");
596 "no TVN_GETDISPINFO for a state seq",
FALSE);
617 "callback for state/overlay image index, noop seq",
FALSE);
634 "callback for state/overlay image index seq",
FALSE);
668 ok(!
strcmp(
sequence,
"1(nR)nR23(Rn)Rn45(nR)nR."),
"root-none select test\n");
670 "root-none select seq",
FALSE);
694 ok(!
strcmp(
sequence,
"1(nR)nR23(RC)RC45(CR)CR."),
"root-child select test\n");
696 "root-child select seq",
FALSE);
708 CHAR szBuffer[80] =
"Blah";
719 U(ins).item.mask = 0;
720 U(ins).item.pszText =
NULL;
721 U(ins).item.cchTextMax = 0;
732 ok(!
strcmp(szBuffer,
""),
"szBuffer=\"%s\", expected \"\"\n", szBuffer);
742 static CHAR child1[] =
"Edit",
743 child2[] =
"A really long string";
761 U(ins).item.pszText = child1;
763 ok(hChild1 !=
NULL,
"failed to set hChild1\n");
766 U(ins).item.pszText = child2;
768 ok(hChild2 !=
NULL,
"failed to set hChild2\n");
792 ok(crColor == ~0
u,
"Default background color reported as 0x%.8x\n", crColor);
797 ok(crColor ==
RGB(0,0,0),
"Black background color reported as 0x%.8x\n", crColor);
802 ok(crColor ==
RGB(255,255,255),
"White background color reported as 0x%.8x\n", crColor);
808 "test get set bkcolor",
FALSE);
826 ok(
himl ==
NULL,
"NULL image list, reported as %p, expected 0.\n",
himl);
831 "test get imagelist",
FALSE);
840 int ulMoreThanTwiceMin;
853 ulMoreThanTwiceMin = 2*ulMinIndent+1;
856 ok(ulIndent == ulMoreThanTwiceMin,
"Indent reported as %d, expected %d\n", ulIndent, ulMoreThanTwiceMin);
859 "test get set indent",
FALSE);
876 ok(crColor ==
RGB(0,0,0),
"Insert mark color reported as 0x%.8x, expected 0x00000000\n", crColor);
879 "test get set insertmark color",
FALSE);
887 int nBufferSize = 80;
888 char szBuffer[80] = {0};
913 ok(!
strcmp(
"Root", szBuffer),
"GetItem: szBuffer=\"%s\", expected \"Root\"\n", szBuffer);
917 lstrcpynA(szBuffer,
"Testing123", nBufferSize);
920 memset(szBuffer, 0, nBufferSize);
923 ok(!
strcmp(
"Testing123", szBuffer),
"GetItem: szBuffer=\"%s\", expected \"Testing123\"\n", szBuffer);
926 memset(szBuffer, 0, nBufferSize);
927 lstrcpynA(szBuffer,
"Root", nBufferSize);
932 "test get set item",
FALSE);
972 ok(ulNewHeight == ulOldHeight,
"Default height not set properly, reported %d, expected %d\n", ulNewHeight, ulOldHeight);
977 ok(ulNewHeight == 2*ulOldHeight,
"New height not set properly, reported %d, expected %d\n", ulNewHeight, 2*ulOldHeight);
982 ok(ulNewHeight == 8,
"Uneven height not set properly, reported %d, expected %d\n", ulNewHeight, 8);
985 "test get set item height",
FALSE);
991 ok(ulOldHeight == 8,
"got %d, expected %d\n", ulOldHeight, 8);
993 ok(ulNewHeight == 2,
"got %d, expected %d\n", ulNewHeight, 2);
996 ok(ulOldHeight == 2,
"got %d, expected %d\n", ulOldHeight, 2);
998 ok(ulNewHeight == 4,
"got %d, expected %d\n", ulNewHeight, 4);
1004 ok(ulOldHeight == 4,
"got %d, expected %d\n", ulOldHeight, 4);
1006 ok(ulNewHeight == 3,
"got %d, expected %d\n", ulNewHeight, 3);
1009 ok(ulOldHeight == 3,
"got %d, expected %d\n", ulOldHeight, 3);
1011 ok(ulNewHeight == 10,
"got %d, expected %d\n", ulNewHeight, 10);
1018 int ulExpectedTime = 20;
1029 ok(ulTime == ulExpectedTime,
"Scroll time reported as %d, expected %d\n", ulTime, ulExpectedTime);
1032 "test get set scroll time",
FALSE);
1049 ok(crColor == ~0
u,
"Default text color reported as 0x%.8x\n", crColor);
1054 ok(crColor ==
RGB(0,0,0),
"Black text color reported as 0x%.8x\n", crColor);
1059 ok(crColor ==
RGB(255,255,255),
"White text color reported as 0x%.8x\n", crColor);
1065 "test get set text color",
FALSE);
1080 ok(tooltips ==
NULL,
"Unexpected tooltip window %p.\n", tooltips);
1083 ok(tooltips ==
NULL,
"Unexpected ret value %p.\n", tooltips);
1090 ok(
IsWindow(tooltips),
"Unexpected tooltip window %p.\n", tooltips);
1096 ok(tooltips ==
NULL,
"Unexpected tooltip window %p.\n", tooltips);
1103 hwnd =
CreateWindowA(
WC_STATICA,
"Test",
WS_VISIBLE|
WS_CHILD, 5, 5, 100, 100,
hMainWnd,
NULL,
NULL, 0);
1104 ok(
hwnd !=
NULL,
"Failed to create child window.\n");
1107 ok(tooltips ==
NULL,
"Unexpected ret value %p.\n", tooltips);
1110 ok(tooltips ==
hwnd,
"Unexpected tooltip window %p.\n", tooltips);
1117 ok(
IsWindow(tooltips) && tooltips !=
hwnd,
"Unexpected tooltip window %p.\n", tooltips);
1122 ok(!
IsWindow(tooltips),
"Unexpected tooltip window %p.\n", tooltips);
1125 ok(tooltips ==
NULL,
"Unexpected tooltip window %p.\n", tooltips);
1135 ok(
IsWindow(tooltips),
"Unexpected ret value %p.\n", tooltips);
1139 ok(!
IsWindow(
hwnd),
"Unexpected tooltip window %p.\n", tooltips);
1140 ok(
IsWindow(tooltips),
"Expected valid window %p.\n", tooltips);
1143 ok(
IsWindow(tooltips),
"Expected valid window %p.\n", tooltips);
1147 for (
i = 0;
i < 2;
i++)
1151 hwnd =
CreateWindowA(
WC_STATICA,
"Test",
WS_VISIBLE|
WS_CHILD, 5, 5, 100, 100,
hMainWnd,
NULL,
NULL, 0);
1152 ok(
hwnd !=
NULL,
"Failed to create child window.\n");
1161 ok(tooltips ==
hwnd,
"Unexpected tooltip window %p.\n", tooltips);
1180 ok(
IsWindow(tooltips),
"Unexpected ret value %p.\n", tooltips);
1186 "test get set tooltips",
TRUE);
1189 ok(
IsWindow(tooltips),
"Expected valid window.\n");
1195 BOOL bPreviousSetting;
1204 ok(bPreviousSetting ==
FALSE,
"Format should be ANSI.\n");
1211 ok(bNewSetting ==
TRUE,
"Unicode setting did not work.\n");
1216 ok(bNewSetting ==
FALSE,
"ANSI setting did not work.\n");
1222 "test get set unicode format",
FALSE);
1229 static LONG defwndproc_counter = 0;
1257 case WM_NOTIFYFORMAT:
1291 static const WCHAR testW[] = {
'T',
'E',
'S',
'T',
'2',0};
1312 static const char*
textA =
"<edittextaltered>";
1316 ok(
IsWindow(edit),
"failed to get edit handle\n");
1360 ok(pTreeView->
itemNew.
hItem == visibleItem,
"expanded item == first visible item\n");
1363 "Failed to get rect for first visible item.\n");
1367 ok(visibleItem !=
NULL,
"There must be a visible item after the first one.\n");
1369 "Failed to get rect for second visible item.\n");
1390 COLORREF c0ffee =
RGB(0xc0,0xff,0xee), cafe =
RGB(0xca,0xfe,0x00);
1405 "got %08x vs %08x\n", bkgnd, nmcd->
clrTextBk);
1418 ok(bkgnd != c0ffee,
"got 0%x\n", bkgnd);
1442 defwndproc_counter++;
1444 defwndproc_counter--;
1451 static CHAR nodeText[][5] = {
"0",
"1",
"2",
"3",
"4"};
1476 U(ins).item.pszText = nodeText[0];
1478 ok(
node[0] !=
NULL,
"failed to set node[0]\n");
1484 U(ins).item.pszText = nodeText[1];
1486 ok(
node[1] !=
NULL,
"failed to set node[1]\n");
1487 U(ins).item.pszText = nodeText[4];
1489 ok(
node[4] !=
NULL,
"failed to set node[4]\n");
1493 U(ins).item.pszText = nodeText[2];
1495 ok(
node[2] !=
NULL,
"failed to set node[2]\n");
1496 U(ins).item.pszText = nodeText[3];
1498 ok(
node[3] !=
NULL,
"failed to set node[3]\n");
1502 ok(!nodeVisible,
"Node 1 should not be visible.\n");
1505 ok(!nodeVisible,
"Node 2 should not be visible.\n");
1508 ok(!nodeVisible,
"Node 3 should not be visible.\n");
1511 ok(!nodeVisible,
"Node 4 should not be visible.\n");
1517 ok(!nodeVisible,
"Node 1 should not be visible.\n");
1520 ok(!nodeVisible,
"Node 2 should not be visible.\n");
1523 ok(!nodeVisible,
"Node 3 should not be visible.\n");
1526 ok(!nodeVisible,
"Node 4 should not be visible.\n");
1544 U(ins).item.mask = 0;
1546 ok(
first !=
NULL,
"failed to insert first node\n");
1548 ok(second !=
NULL,
"failed to insert second node\n");
1549 for (
i=0;
i<100;
i++)
1552 ok(
last !=
NULL,
"failed to insert %d node\n",
i);
1557 ok(
child !=
NULL,
"failed to insert child node\n");
1565 ok(visible,
"first node should be visible\n");
1566 ok(!
rect.left,
"rect.left = %d\n",
rect.left);
1568 ok(
rect.right,
"rect.right = 0\n");
1569 ok(
rect.bottom,
"rect.bottom = 0\n");
1587 ok(!
IsWindow(edit),
"Expected valid handle\n");
1591 ok(
IsWindow(edit),
"Expected valid handle\n");
1598 ok(
IsWindow(edit),
"Expected edit control to be valid\n");
1601 ok(!
IsWindow(edit),
"Expected edit control to be destroyed\n");
1608 ok(
IsWindow(edit),
"Expected valid handle\n");
1611 ok(
IsWindow(edit),
"Expected edit control to be valid\n");
1619 ok(
IsWindow(edit),
"Expected valid handle\n");
1628 ok(!
IsWindow(edit),
"Expected edit control to be destroyed\n");
1632 item.pszText = buffA;
1636 ok(!
strcmp(
"x", buffA),
"Expected item text to change\n");
1640 ok(
IsWindow(edit),
"Expected valid handle\n");
1644 ok(!
IsWindow(edit),
"expected invalid handle\n");
1647 ok(
IsWindow(edit),
"Expected valid handle\n");
1657 item.pszText = buffA;
1658 item.cchTextMax = 0;
1664 ok(
IsWindow(edit),
"Expected valid handle\n");
1668 ok(!
strcmp(buffA,
"<edittextaltered>"),
"got string %s\n", buffA);
1677 memset(&cls, 0,
sizeof(cls));
1694 win_skip(
"TVM_GETLINECOLOR is not supported on comctl32 < 5.80\n");
1711 win_skip(
"TVM_GETINSERTMARKCOLOR is not supported on comctl32 < 5.80\n");
1873 ok(hitem !=
NULL,
"got %p\n", hitem);
1877 item.cChildren = 0x80000000;
1900 item.iExpandedImage = 1;
1906 item.iExpandedImage = -1;
1911 if (
item.iExpandedImage != 1)
1913 win_skip(
"TVIF_EXPANDEDIMAGE not supported\n");
1920 item.iExpandedImage = -1;
1932 HTREEITEM alpha, bravo, charlie, delta, echo, foxtrot, golf, hotel, india, juliet;
1962 { &charlie, &bravo, 0 },
1964 { &echo, &delta, 0 },
1967 { &hotel, &golf, 0 },
1969 { &juliet, &foxtrot, 0 }
1999 U(ins).item.pszText =
foo;
2015 ok(
ret ==
items[
i].final_state,
"singleexpand items[%d]: expected state 0x%x got 0x%x\n",
2040 ok(clr == ~0
u,
"got %d, expected -1\n", clr);
2048 ok(clr ==
RGB(0, 0, 0),
"got 0x%x\n", clr);
2104 U(ins).item.pszText =
item1;
2106 ok(hItem1 !=
NULL,
"InsertItem failed\n");
2111 U(ins).item.pszText =
item2;
2113 ok(hItem2 !=
NULL,
"InsertItem failed\n");
2211 "Unexpected parent item %p, got %p, %p\n",
parent,
data->parent,
hwnd);
2229 "Width %d, rect width %d.\n",
width,
rect.right -
rect.left);
2233#define CHECK_ITEM(a, b) _check_item(a, b, is_version_6, __LINE__)
2250 U(ins).item.mask = 0;
2257 U(ins).item.mask = 0;
2290 ok(
item.state == 0,
"got 0x%x\n",
item.state);
2306 ok(himl2 !=
NULL,
"got %p\n", himl2);
2307 ok(himl2 ==
himl,
"got %p, expected %p\n", himl2,
himl);
2340 ok(himl2 !=
NULL,
"got %p\n", himl2);
2341 ok(
himl != himl2,
"got %p, expected %p\n", himl2,
himl);
2414 ok(himl2 ==
himl,
"got %p\n", himl2);
2417 ok(himl2 ==
NULL,
"got %p\n", himl2);
2572 static const char *rootA =
"root";
2582 U(ins).item.pszText = (
char*)rootA;
2647 static const char *itemnames[] =
2649 "root",
"Wasp",
"Caribou",
"Vacuum",
2650 "Ocelot",
"Newspaper",
"Litter bin"
2663 U(ins).item.pszText = (
char *)itemnames[
i++];
2669 U(ins).item.pszText = (
char *)itemnames[
i++];
2672 U(ins).item.pszText = (
char *)itemnames[
i++];
2676 U(ins).item.pszText = (
char *)itemnames[
i++];
2679 U(ins).item.pszText = (
char *)itemnames[
i++];
2683 U(ins).item.pszText = (
char *)itemnames[
i++];
2686 U(ins).item.pszText = (
char *)itemnames[
i++];
2692 static const char *initial_order =
"rootWaspVacuumOcelotCaribouNewspaperLitter bin";
2693 static const char *sorted_order =
"rootCaribouNewspaperLitter binWaspVacuumOcelot";
2704 ok(!
ret,
"Unexpected ret value %d\n",
ret);
2707 ok(!
ret,
"Unexpected ret value %d\n",
ret);
2713 U(ins).item.pszText = (
char *)
"root";
2718 ok(!
ret,
"Unexpected ret value %d\n",
ret);
2721 ok(!
ret,
"Unexpected ret value %d\n",
ret);
2726 ok(!
strcmp(
buff, initial_order),
"Wrong initial order %s, expected %s\n",
buff, initial_order);
2732 ok(
ret,
"Unexpected ret value %d\n",
ret);
2734 ok(!
strcmp(
buff, initial_order),
"Wrong sorted order %s, expected %s\n",
buff, initial_order);
2740 ok(
ret,
"Unexpected ret value %d\n",
ret);
2742 ok(!
strcmp(
buff, initial_order),
"Wrong sorted order %s, expected %s\n",
buff, initial_order);
2747 ok(
root !=
NULL,
"Failed to get root item\n");
2749 ok(
ret,
"Unexpected ret value %d\n",
ret);
2751 ok(!
strcmp(
buff, sorted_order),
"Wrong sorted order %s, expected %s\n",
buff, sorted_order);
2757 ok(
ret,
"Unexpected ret value %d\n",
ret);
2759 ok(!
strcmp(
buff, initial_order),
"Wrong sorted order %s, expected %s\n",
buff, sorted_order);
2765 ok(
ret,
"Unexpected ret value %d\n",
ret);
2767 ok(!
strcmp(
buff, initial_order),
"Wrong sorted order %s, expected %s\n",
buff, sorted_order);
2772 ok(
root !=
NULL,
"Failed to get root item\n");
2774 ok(
ret,
"Unexpected ret value %d\n",
ret);
2776 ok(!
strcmp(
buff, sorted_order),
"Wrong sorted order %s, expected %s\n",
buff, sorted_order);
2784 U(ins).item.pszText = (
char *)
"root";
2790 U(ins).item.pszText = (
char *)
"I1";
2795 U(ins).item.pszText = (
char *)
"i1";
2799 ok(
ret,
"Unexpected ret value %d\n",
ret);
2824 ok(
result,
"TVM_GETITEMRECT failed\n");
2856#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
2870 iccex.
dwSize =
sizeof(iccex);
2872 pInitCommonControlsEx(&iccex);
2892 ok(
hMainWnd !=
NULL,
"Failed to create parent window. Tests aborted.\n");
char * strcat(char *DstString, const char *SrcString)
int strcmp(const char *String1, const char *String2)
char * strcpy(char *DstString, const char *SrcString)
DWORD GetPixel(LPDIRECTDRAWSURFACE7 Surface, UINT x, UINT y)
static void init_msg_sequences(struct msg_sequence **seq, int n)
static void flush_sequences(struct msg_sequence **seq, int n)
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
static WNDPROC pOldWndProc
static char selected[MAX_PATH+1]
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
DWORD WINAPI GetTickCount(VOID)
INT WSAAPI select(IN INT s, IN OUT LPFD_SET readfds, IN OUT LPFD_SET writefds, IN OUT LPFD_SET exceptfds, IN CONST struct timeval *timeout)
static unsigned char buff[32768]
GLclampf GLclampf GLclampf alpha
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLint GLint GLsizei width
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
static const struct newhuff ht[]
static const WCHAR testW[]
#define memcpy(s1, s2, n)
#define sprintf(buf, format,...)
static const char textA[]
static const char * TEST_CALLBACK_TEXT
static void test_get_set_imagelist(void)
static const struct message parent_expand_seq[]
static const struct message getitemtext_seq[]
static void test_TVS_SINGLEEXPAND(void)
static void test_expandnotify(void)
static char sequence[256]
static void test_delete_items(void)
static void test_expandinvisible(void)
static void fill_treeview_sort_test(HWND hwnd)
static const struct message focus_seq[]
static const struct message FillRootSeq[]
static void test_get_set_item(void)
static TVITEMA g_item_expanded
static void test_get_insertmarkcolor(void)
#define NUM_MSG_SEQUENCES
static const struct message parent_expand_empty_kb_seq[]
static const struct message test_get_set_bkcolor_seq[]
static void test_customdraw(void)
static void _check_item(HWND hwnd, HTREEITEM item, BOOL is_version_6, int line)
static const struct message rootnone_select_seq[]
static void test_TVS_FULLROWSELECT(void)
static void test_cchildren(void)
static const struct message parent_vk_return_seq[]
static void test_TVM_HITTEST(void)
static void test_WM_KEYDOWN(void)
static const struct message parent_singleexpand_seq5[]
static void test_WM_PAINT(void)
static struct msg_sequence * item_sequence[1]
static HFONT g_customdraw_font
static const struct message parent_collapse_2nd_kb_seq[]
static const struct message test_get_set_imagelist_seq[]
static void test_TVM_GETNEXTITEM(void)
static void test_focus(void)
static const struct message test_get_set_itemheight_seq[]
static void test_get_set_itemheight(void)
static const struct message parent_singleexpand_seq1[]
static const struct message parent_singleexpand_seq7[]
#define TREEVIEW_SEQ_INDEX
static void test_get_set_insertmark(void)
static const struct message parent_singleexpand_seq4[]
static void test_itemedit(void)
static void test_TVM_SORTCHILDREN(void)
static TVITEMA g_item_expanding
static const struct message rootchild_select_seq[]
static void test_get_set_tooltips(void)
static struct msg_sequence * sequences[NUM_MSG_SEQUENCES]
static void test_treeview_classinfo(void)
static void test_select(void)
static void test_get_set_unicodeformat(void)
static void flush_events(void)
static const struct message test_get_set_item_seq[]
static void test_get_linecolor(void)
static void test_fillroot(void)
static const struct message parent_singleexpand_seq0[]
static BOOL g_disp_A_to_W
static const struct message test_get_set_tooltips_seq[]
static LRESULT CALLBACK parent_wnd_proc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
static const struct message parent_right_click_seq[]
#define expect(expected, got)
static void test_getitemtext(void)
static const struct message test_get_set_indent_seq[]
static void get_item_names_string(HWND hwnd, HTREEITEM item, char *str)
static void test_WM_GETDLGCODE(void)
static void IdentifyItem(HTREEITEM hItem)
static void test_expand(void)
static void test_get_set_indent(void)
static BOOL g_beginedit_alter_text
static const struct message parent_singleexpand_seq3[]
static const struct message test_get_set_insertmarkcolor_seq[]
static const struct message parent_expand_kb_seq[]
static LRESULT WINAPI TreeviewWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
static void fill_tree(HWND hTree)
#define PARENT_CD_SEQ_INDEX
static const struct message parent_cd_seq[]
static void test_callback(void)
static const struct message test_get_set_unicodeformat_seq[]
static void test_get_set_scrolltime(void)
static const struct message test_get_set_scrolltime_seq[]
static const struct message parent_singleexpand_seq6[]
static const struct message test_right_click_seq[]
static BOOL g_get_rect_in_expand
static void init_functions(void)
static const struct message parent_get_dispinfo_seq[]
static void test_right_click(void)
static void test_TVS_CHECKBOXES(void)
static BOOL g_disp_set_stateimage
static BOOL g_get_from_expand
static const struct message test_get_set_textcolor_seq[]
static const struct message parent_singleexpand_seq2[]
static void test_htreeitem_layout(BOOL is_version_6)
static void test_expandedimage(void)
static void test_get_set_textcolor(void)
static const struct message empty_seq[]
static void test_get_set_bkcolor(void)
static HWND create_treeview_control(DWORD style)
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
#define WS_OVERLAPPEDWINDOW
#define CDDS_ITEMPOSTPAINT
#define TVN_ENDLABELEDITA
#define CDRF_NOTIFYITEMERASE
#define CDDS_ITEMPREPAINT
#define ICC_TREEVIEW_CLASSES
#define TVGN_FIRSTVISIBLE
#define TVN_ITEMEXPANDINGA
#define TVN_BEGINLABELEDITA
#define TVIS_EXPANDEDONCE
#define CDRF_NOTIFYITEMDRAW
#define LPSTR_TEXTCALLBACKA
#define TVIF_EXPANDEDIMAGE
#define TVHT_ONITEMINDENT
#define TVM_GETUNICODEFORMAT
struct _IMAGELIST * HIMAGELIST
#define TVM_GETITEMHEIGHT
#define TVM_SETSCROLLTIME
#define TVHT_ONITEMBUTTON
#define TVS_FULLROWSELECT
#define NM_TOOLTIPSCREATED
#define CDRF_NOTIFYPOSTPAINT
struct _TREEITEM * HTREEITEM
#define TVN_ITEMEXPANDEDA
#define TVM_SETINSERTMARKCOLOR
#define TVS_NONEVENHEIGHT
#define TVM_GETEDITCONTROL
struct tagNMTREEVIEWA * LPNMTREEVIEWA
#define TVIS_STATEIMAGEMASK
#define TVM_SETUNICODEFORMAT
#define TVM_ENSUREVISIBLE
#define INDEXTOSTATEIMAGEMASK(i)
#define TVM_GETINSERTMARKCOLOR
#define INDEXTOOVERLAYMASK(i)
#define TVM_GETSCROLLTIME
#define TVIF_SELECTEDIMAGE
#define TVM_SETITEMHEIGHT
#define TreeView_GetItemA(hwnd, pitem)
#define TreeView_SetItemA(hwnd, pitem)
#define TreeView_InsertItemA(hwnd, phdi)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
static BOOL load_v6_module(ULONG_PTR *pcookie, HANDLE *hCtx)
static void unload_v6_module(ULONG_PTR cookie, HANDLE hCtx)
int WINAPI GetWindowTextA(HWND hWnd, LPSTR lpString, int nMaxCount)
HGDIOBJ WINAPI GetStockObject(_In_ int)
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
HFONT WINAPI CreateFontIndirectA(_In_ const LOGFONTA *)
COLORREF WINAPI GetTextColor(_In_ HDC)
HGDIOBJ WINAPI GetCurrentObject(_In_ HDC, _In_ UINT)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
COLORREF WINAPI GetBkColor(_In_ HDC)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
HWND WINAPI GetFocus(void)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
#define SetWindowLongPtrA
BOOL WINAPI IsWindow(_In_opt_ HWND)
BOOL WINAPI SetWindowTextA(_In_ HWND, _In_opt_ LPCSTR)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
HWND WINAPI CreateWindowExA(_In_ DWORD dwExStyle, _In_opt_ LPCSTR lpClassName, _In_opt_ LPCSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
LONG WINAPI GetWindowLongA(_In_ HWND, _In_ int)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_CAPTURECHANGED
#define WM_WINDOWPOSCHANGING
#define SW_SCROLLCHILDREN
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
LONG WINAPI SetWindowLongA(_In_ HWND, _In_ int, _In_ LONG)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define GetWindowLongPtrA
#define SPI_GETICONTITLELOGFONT
BOOL WINAPI SetCursorPos(_In_ int, _In_ int)
DWORD WINAPI MsgWaitForMultipleObjects(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ BOOL fWaitAll, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask)
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
#define WM_IME_SETCONTEXT
BOOL WINAPI IsWindowUnicode(_In_ HWND)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI UpdateWindow(_In_ HWND)
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL WINAPI GetClassInfoA(_In_opt_ HINSTANCE, _In_ LPCSTR, _Out_ LPWNDCLASSA)
BOOL WINAPI SystemParametersInfoA(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
BOOL WINAPI PeekMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
BOOL WINAPI GetMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
#define WM_WINDOWPOSCHANGED
BOOL WINAPI DestroyWindow(_In_ HWND)
int WINAPI ScrollWindowEx(_In_ HWND, _In_ int, _In_ int, _In_opt_ LPCRECT, _In_opt_ LPCRECT, _In_opt_ HRGN, _Out_opt_ LPRECT, _In_ UINT)
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)