33 #define WAIT Sleep (1000) 34 #define REDRAW RedrawWindow (handle, NULL, 0, RDW_UPDATENOW) 44 "Fourth added which is very long because at some time we only had a 256 byte character buffer and that was overflowing in one of those applications that had a common dialog file open box and tried to add a 300 characters long custom filter string which of course the code did not like and crashed. Just make sure this string is longer than 256 characters." 130 #define listbox_field_ok(t, s, f, got) \ 131 ok (t.s.f==got.f, "style %#x, step " #s ", field " #f \ 132 ": expected %d, got %d\n", style, t.s.f, got.f) 134 #define listbox_todo_field_ok(t, s, f, got) \ 135 todo_wine_if (t.s##_todo.f) { listbox_field_ok(t, s, f, got); } 137 #define listbox_ok(t, s, got) \ 138 listbox_todo_field_ok(t, s, selected, got); \ 139 listbox_todo_field_ok(t, s, anchor, got); \ 140 listbox_todo_field_ok(t, s, caret, got); \ 141 listbox_todo_field_ok(t, s, selcount, got) 187 ok(resA == resW,
"Unexpected text length.\n");
197 ok((
res==4),
"Expected 4 items, got %d\n",
res);
203 ok((
res==4),
"Expected 4 items, got %d\n",
res);
226 ok (itemHeight ==
tm.tmHeight,
"Item height wrong, got %d, expecting %d\n", itemHeight,
tm.tmHeight);
233 ok(itemHeight ==
tm.tmHeight,
"itemHeight %d\n", itemHeight);
235 ok(itemHeight ==
tm.tmHeight,
"itemHeight %d\n", itemHeight);
237 ok(itemHeight ==
tm.tmHeight,
"itemHeight %d\n", itemHeight);
254 ok(
mi->CtlID == 1,
"mi->CtlID = %u\n",
mi->CtlID);
255 ok(
mi->itemHeight,
"mi->itemHeight = 0\n");
268 "mi->itemData = %08lx, expected %p\n",
mi->itemData,
strings[
mi->itemID]);
274 RECT rc_item, rc_client, rc_clip;
279 ok(
wparam == dis->
CtlID,
"got wParam=%08lx instead of %08x\n",
288 "client rect of the listbox should be equal to the clip box," 289 "or the clip box should be empty\n");
341 static const DWORD styles[] =
370 ok(
ret == 1,
"wrong top index %d\n",
ret);
375 ok(rc.top < 0,
"rc.top is not negative (%d)\n", rc.top);
387 ok(
ret == 0,
"Unexpected return value %d.\n",
ret);
389 ok(
ret == 1,
"Unexpected return value %d.\n",
ret);
395 ok(
ret == 13,
"Unexpected item height %d.\n",
ret);
401 ok(
ret == 42,
"Unexpected item height %d.\n",
ret);
404 ok(
ret == 42,
"Unexpected item height %d.\n",
ret);
411 #define listbox_test_query(exp, got) \ 412 ok(exp.selected == got.selected, "expected selected %d, got %d\n", exp.selected, got.selected); \ 413 ok(exp.anchor == got.anchor, "expected anchor %d, got %d\n", exp.anchor, got.anchor); \ 414 ok(exp.caret == got.caret, "expected caret %d, got %d\n", exp.caret, got.caret); \ 415 ok(exp.selcount == got.selcount, "expected selcount %d, got %d\n", exp.selcount, got.selcount); 427 trace(
"testing LB_SELITEMRANGE\n");
436 ok(
ret ==
LB_OKAY,
"LB_SELITEMRANGE returned %d instead of LB_OKAY\n",
ret);
445 ok(
ret ==
LB_OKAY,
"LB_SELITEMRANGE returned %d instead of LB_OKAY\n",
ret);
454 ok(
ret ==
LB_OKAY,
"LB_SELITEMRANGE returned %d instead of LB_OKAY\n",
ret);
463 ok(
ret ==
LB_OKAY,
"LB_SELITEMRANGE returned %d instead of LB_OKAY\n",
ret);
472 ok(
ret ==
LB_OKAY,
"LB_SELITEMRANGE returned %d instead of LB_OKAY\n",
ret);
481 ok(
ret ==
LB_OKAY,
"LB_SELITEMRANGE returned %d instead of LB_OKAY\n",
ret);
490 ok(
ret ==
LB_OKAY,
"LB_SELITEMRANGE returned %d instead of LB_OKAY\n",
ret);
502 trace(
"testing LB_SETCURSEL\n");
513 ok(
ret == -1,
"Unexpected anchor index %d.\n",
ret);
516 ok(
ret == 2,
"LB_SETCURSEL returned %d instead of 2\n",
ret);
518 ok(
ret == 0,
"expected vscroll 0, got %d\n",
ret);
521 ok(
ret == -1,
"Unexpected anchor index %d.\n",
ret);
524 ok(
ret == 3,
"LB_SETCURSEL returned %d instead of 3\n",
ret);
526 ok(
ret == 1,
"expected vscroll 1, got %d\n",
ret);
529 ok(
ret == -1,
"Unexpected anchor index %d.\n",
ret);
534 ok(hLB !=
NULL,
"Failed to create ListBox window.\n");
537 ok(
ret == 1,
"Unexpected return value %d.\n",
ret);
540 ok(
ret == -1,
"Unexpected anchor index %d.\n",
ret);
546 ok(hLB !=
NULL,
"Failed to create ListBox window.\n");
549 ok(
ret == -1,
"Unexpected anchor index %d.\n",
ret);
552 ok(
ret == -1,
"Unexpected return value %d.\n",
ret);
555 ok(
ret == -1,
"Unexpected anchor index %d.\n",
ret);
561 ok(hLB !=
NULL,
"Failed to create ListBox window.\n");
564 ok(
ret == -1,
"Unexpected anchor index %d.\n",
ret);
567 ok(
ret == -1,
"Unexpected return value %d.\n",
ret);
570 ok(
ret == -1,
"Unexpected anchor index %d.\n",
ret);
582 ok(
list !=
NULL,
"Failed to create ListBox window.\n");
585 ok(
ret == -1,
"Unexpected anchor index %d.\n",
ret);
588 ok(
ret == 0,
"Unexpected return value %d.\n",
ret);
590 ok(
ret == 0,
"Unexpected anchor index %d.\n",
ret);
593 ok(
ret == 0,
"Unexpected return value %d.\n",
ret);
595 ok(
ret == 1,
"Unexpected anchor index %d.\n",
ret);
598 ok(
ret == 0,
"Unexpected return value %d.\n",
ret);
600 ok(
ret == 1,
"Unexpected anchor index %d.\n",
ret);
606 ok(
list !=
NULL,
"Failed to create ListBox window.\n");
609 ok(
ret == -1,
"Unexpected anchor index %d.\n",
ret);
612 ok(
ret == 0,
"Unexpected return value %d.\n",
ret);
614 ok(
ret == 0,
"Unexpected anchor index %d.\n",
ret);
617 ok(
ret == 0,
"Unexpected return value %d.\n",
ret);
619 ok(
ret == 1,
"Unexpected anchor index %d.\n",
ret);
622 ok(
ret == 0,
"Unexpected return value %d.\n",
ret);
624 ok(
ret == 1,
"Unexpected anchor index %d.\n",
ret);
639 ok(
id == 0,
"item id wrong\n");
642 ok(
r == 0,
"send message failed\n");
645 ok(
r == 20,
"height wrong\n");
648 ok(
r == -1,
"send message failed\n");
651 ok(
r == 20,
"height wrong\n");
654 ok(
r == -1,
"send message failed\n");
657 ok(
r == 20,
"height wrong\n");
660 ok(
r == 0,
"send message failed\n");
663 ok(
r == 0xff,
"height wrong\n");
670 static const DWORD styles[] =
675 static const DWORD selstyles[] =
682 static const LONG selexpect_single[] = { 0, 0, 1 };
683 static const LONG selexpect_single2[] = { 1, 0, 0 };
684 static const LONG selexpect_multi[] = { 1, 0, 1 };
685 static const LONG selexpect_multi2[] = { 1, 1, 0 };
693 ok(
parent !=
NULL,
"Failed to create parent window.\n");
699 LONG setcursel_expect, selitemrange_expect, getselcount_expect;
700 const LONG *selexpect;
704 ok(listbox !=
NULL,
"%u: Failed to create ListBox window.\n",
j);
708 setcursel_expect =
LB_ERR;
710 getselcount_expect = 2;
711 selexpect = selexpect_multi;
715 setcursel_expect = 2;
716 selitemrange_expect =
LB_ERR;
717 getselcount_expect =
LB_ERR;
718 selexpect = selexpect_single;
724 ok(
ret ==
k,
"%u: Unexpected return value %d, expected %d.\n",
j,
ret,
k);
731 ok(
ret == setcursel_expect,
"%u: Unexpected return value %d.\n",
j,
ret);
733 ok(
ret == selitemrange_expect,
"%u: Unexpected return value %d.\n",
j,
ret);
735 ok(
ret == selitemrange_expect,
"%u: Unexpected return value %d.\n",
j,
ret);
741 ok(
ret == selexpect[
k],
"%u: Unexpected selection state %d, expected %d.\n",
742 j,
ret, selexpect[
k]);
748 "%u: unexpected window styles %#x.\n",
j,
style);
755 ok(!(
style & selstyles[
j]),
"%u: unexpected window styles %#x.\n",
j,
style);
759 ok(
ret == getselcount_expect,
"%u: expected %d from LB_GETSELCOUNT, got %d\n",
760 j, getselcount_expect,
ret);
765 ok(
ret == selexpect[
k],
"%u: Unexpected selection state %d, expected %d.\n",
766 j,
ret, selexpect[
k]);
770 if (setcursel_expect !=
LB_ERR) setcursel_expect = 0;
772 ok(
ret == setcursel_expect,
"%u: Unexpected return value %d.\n",
j,
ret);
774 ok(
ret == selitemrange_expect,
"%u: Unexpected return value %d.\n",
j,
ret);
776 ok(
ret == selitemrange_expect,
"%u: Unexpected return value %d.\n",
j,
ret);
781 ok(
ret == getselcount_expect,
"%u: expected %d from LB_GETSELCOUNT, got %d\n",
782 j, getselcount_expect,
ret);
787 ok(
ret == selexpect[
k],
"%u: Unexpected selection state %d, expected %d.\n",
788 j,
ret, selexpect[
k]);
811 ok(
r == 0x1ffff ||
r == 0x10000 ||
r == 0xffffffff,
"ret %x\n",
r );
814 ok(
r == 0x1ffff ||
r == 0x10000 ||
r == 0xffffffff,
"ret %x\n",
r );
817 ok(
r == 0x1ffff ||
r == 0x10000 ||
r == 0xffffffff,
"ret %x\n",
r );
820 ok(
id == 0,
"item id wrong\n");
822 ok(
id == 1,
"item id wrong\n");
825 ok(
r == 0
x1,
"ret %x\n",
r );
833 ok(
r == 1,
"ret %x\n",
r);
835 ok(
r != 0,
"ret %x\n",
r);
838 ok(
id == 2,
"item id wrong\n");
840 ok(
id == 3,
"item id wrong\n");
842 ok(
id == 4,
"item id wrong\n");
844 ok(
id == 5,
"item id wrong\n");
846 ok(
id == 6,
"item id wrong\n");
848 ok(
id == 7,
"item id wrong\n");
855 ok(
r == 1,
"top %d\n",
r);
858 ok(
r == 1,
"ret %x\n",
r);
860 ok(
r == 0,
"ret %x\n",
r);
863 ok(
r == 1,
"ret %x\n",
r);
894 ok(
id == 0,
"item id wrong\n");
897 ok(
r ==
TRUE,
"LB_SETITEMDATA returned %d instead of TRUE\n",
r);
900 ok(
r == 20,
"get item data failed\n");
910 int itemCount_justFiles;
911 int itemCount_justDrives;
912 int itemCount_allFiles;
913 int itemCount_allDirs;
918 const char *wildcard =
"*";
926 ok(
ret,
"Failed to set current directory.\n");
929 ok(
ret,
"Failed to create test directory.\n");
960 ok (itemCount > 0,
"SendMessage(LB_DIR) did NOT fill the listbox!\n");
961 itemCount_allFiles = itemCount;
962 ok(
res + 1 == itemCount,
963 "SendMessage(LB_DIR, 0, *) returned incorrect index (expected %d got %d)!\n",
974 ok (itemCount == 0,
"SendMessage(LB_DIR) DID fill the listbox!\n");
987 "expected no change to pathBuffer, got %s\n",
pathBuffer);
991 ok (itemCount > 0,
"SendMessage(LB_DIR) did NOT fill the listbox!\n");
992 itemCount_justFiles = itemCount;
993 ok(
res + 1 == itemCount,
994 "SendMessage(LB_DIR, 0, w*.c) returned incorrect index (expected %d got %d)!\n",
998 for (
i = 0;
i < itemCount;
i++) {
1003 (*(
p-1) ==
'c' || *(
p-1) ==
'C') &&
1004 (*(
p-2) ==
'.')),
"Element %d (%s) does not fit requested w*.c\n",
i,
pathBuffer);
1011 ok (
res > 0,
"SendMessage(LB_DIR, DDL_DIRECTORY, *) failed - 0x%08x\n",
GetLastError());
1017 itemCount_allDirs = itemCount - itemCount_allFiles;
1018 ok (itemCount > itemCount_allFiles,
1019 "SendMessage(LB_DIR, DDL_DIRECTORY, *) filled with %d entries, expected > %d\n",
1020 itemCount, itemCount_allFiles);
1021 ok(
res + 1 == itemCount,
1022 "SendMessage(LB_DIR, DDL_DIRECTORY, *) returned incorrect index (expected %d got %d)!\n",
1023 itemCount - 1,
res);
1029 ok (
res == -1,
"SendMessage(LB_DIR, DDL_DIRECTORY, %s) returned %d, expected -1\n",
BAD_EXTENSION,
res);
1033 ok (itemCount == 0,
"SendMessage(LB_DIR) DID fill the listbox!\n");
1040 ok (
res >= 0,
"SendMessage(LB_DIR, DDL_DIRECTORY, w*.c) failed - 0x%08x\n",
GetLastError());
1046 ok (itemCount == itemCount_justFiles,
1047 "SendMessage(LB_DIR, DDL_DIRECTORY, w*.c) filled with %d entries, expected %d\n",
1048 itemCount, itemCount_justFiles);
1049 ok(
res + 1 == itemCount,
1050 "SendMessage(LB_DIR, DDL_DIRECTORY, w*.c) returned incorrect index (expected %d got %d)!\n",
1051 itemCount - 1,
res);
1054 for (
i = 0;
i < itemCount;
i++) {
1060 (*(
p-1) ==
'c' || *(
p-1) ==
'C') &&
1061 (*(
p-2) ==
'.')),
"Element %d (%s) does not fit requested w*.c\n",
i,
pathBuffer);
1069 ok (
res >= 0,
"SendMessage(LB_DIR, DDL_DRIVES|DDL_EXCLUSIVE, *) failed - 0x%08x\n",
GetLastError());
1078 "SendMessage(LB_DIR, DDL_DRIVES|DDL_EXCLUSIVE, *) filled with %d entries, expected at least %d\n",
1080 itemCount_justDrives = itemCount;
1081 ok(
res + 1 == itemCount,
"SendMessage(LB_DIR, DDL_DRIVES|DDL_EXCLUSIVE, *) returned incorrect index!\n");
1084 for (
i = 0;
i < itemCount;
i++) {
1090 ok( driveletter >=
'a' && driveletter <=
'z',
"Drive letter not in range a..z, got ascii %d\n", driveletter);
1091 if (!(driveletter >=
'a' && driveletter <=
'z')) {
1094 itemCount_justDrives--;
1102 ok (
res == itemCount_justDrives -1,
"SendMessage(LB_DIR, DDL_DRIVES|DDL_EXCLUSIVE, %s) returned %d, expected %d\n",
1106 ok (itemCount == itemCount_justDrives,
"SendMessage(LB_DIR) returned %d expected %d\n",
1107 itemCount, itemCount_justDrives);
1109 trace(
"Files with w*.c: %d Mapped drives: %d Directories: 1\n",
1110 itemCount_justFiles, itemCount_justDrives);
1116 ok (
res > 0,
"SendMessage(LB_DIR, DDL_DRIVES, *) failed - 0x%08x\n",
GetLastError());
1124 ok (itemCount == itemCount_justDrives + itemCount_allFiles,
1125 "SendMessage(LB_DIR, DDL_DRIVES, *) filled with %d entries, expected %d\n",
1126 itemCount, itemCount_justDrives + itemCount_allFiles);
1127 ok(
res + 1 == itemCount,
"SendMessage(LB_DIR, DDL_DRIVES, *) returned incorrect index!\n");
1133 ok (
res == itemCount_justDrives -1,
"SendMessage(LB_DIR, DDL_DRIVES, %s) returned %d, expected %d\n",
1137 ok (itemCount ==
res + 1,
"SendMessage(LB_DIR) returned %d expected %d\n", itemCount,
res + 1);
1144 ok (
res > 0,
"SendMessage(LB_DIR, DDL_DRIVES, w*.c) failed - 0x%08x\n",
GetLastError());
1152 ok (itemCount == itemCount_justDrives + itemCount_justFiles,
1153 "SendMessage(LB_DIR, DDL_DRIVES, w*.c) filled with %d entries, expected %d\n",
1154 itemCount, itemCount_justDrives + itemCount_justFiles);
1155 ok(
res + 1 == itemCount,
"SendMessage(LB_DIR, DDL_DRIVES, w*.c) returned incorrect index!\n");
1158 for (
i = 0;
i < itemCount;
i++) {
1165 ok( driveletter >=
'a' && driveletter <=
'z',
"Drive letter not in range a..z, got ascii %d\n", driveletter);
1169 (*(
p-1) ==
'c' || *(
p-1) ==
'C') &&
1170 (*(
p-2) ==
'.')),
"Element %d (%s) does not fit requested w*.c\n",
i,
pathBuffer);
1179 ok (
res > 0,
"SendMessage(LB_DIR, DDL_DIRECTORY|DDL_DRIVES, *) failed - 0x%08x\n",
GetLastError());
1185 ok (itemCount == itemCount_allFiles + itemCount_justDrives + itemCount_allDirs,
1186 "SendMessage(LB_DIR, DDL_DIRECTORY|DDL_DRIVES) filled with %d entries, expected %d\n",
1187 itemCount, itemCount_allFiles + itemCount_justDrives + itemCount_allDirs);
1188 ok(
res + 1 == itemCount,
"SendMessage(LB_DIR, DDL_DIRECTORY|DDL_DRIVES, w*.c) returned incorrect index!\n");
1194 for (
i = 0;
i < itemCount;
i++) {
1199 ok( driveletter >=
'a' && driveletter <=
'z',
"Drive letter not in range a..z, got ascii %d\n", driveletter);
1207 ok (
res == itemCount_justDrives -1,
"SendMessage(LB_DIR, DDL_DIRECTORY|DDL_DRIVES, %s) returned %d, expected %d\n",
1211 ok (itemCount ==
res + 1,
"SendMessage(LB_DIR) returned %d expected %d\n", itemCount,
res + 1);
1219 ok (
res > 0,
"SendMessage(LB_DIR, DDL_DIRECTORY|DDL_DRIVES, w*.c) failed - 0x%08x\n",
GetLastError());
1225 ok (itemCount == itemCount_justFiles + itemCount_justDrives,
1226 "SendMessage(LB_DIR, DDL_DIRECTORY|DDL_DRIVES) filled with %d entries, expected %d\n",
1227 itemCount, itemCount_justFiles + itemCount_justDrives);
1228 ok(
res + 1 == itemCount,
"SendMessage(LB_DIR, DDL_DIRECTORY|DDL_DRIVES, w*.c) returned incorrect index!\n");
1234 for (
i = 0;
i < itemCount;
i++) {
1240 ok( driveletter >=
'a' && driveletter <=
'z',
"Drive letter not in range a..z, got ascii %d\n", driveletter);
1244 (*(
p-1) ==
'c' || *(
p-1) ==
'C') &&
1245 (*(
p-2) ==
'.')),
"Element %d (%s) does not fit requested w*.c\n",
i,
pathBuffer);
1253 ok (
res != -1,
"SendMessage(LB_DIR, DDL_DIRECTORY|DDL_EXCLUSIVE, *) failed err %u\n",
GetLastError());
1256 ok (itemCount == itemCount_allDirs,
1257 "SendMessage(LB_DIR, DDL_DIRECTORY|DDL_EXCLUSIVE) filled with %d entries, expected %d\n",
1258 itemCount, itemCount_allDirs);
1259 ok(
res + 1 == itemCount,
"SendMessage(LB_DIR, DDL_DIRECTORY|DDL_EXCLUSIVE, *) returned incorrect index!\n");
1272 ok (
res == -1,
"SendMessage(LB_DIR, DDL_DIRECTORY|DDL_EXCLUSIVE, %s) returned %d, expected %d\n",
1276 ok (itemCount ==
res + 1,
"SendMessage(LB_DIR) returned %d expected %d\n", itemCount,
res + 1);
1283 ok (
res ==
LB_ERR,
"SendMessage(LB_DIR, DDL_DIRECTORY|DDL_EXCLUSIVE, w*.c) returned %d expected %d\n",
res,
LB_ERR);
1288 "SendMessage(LB_DIR, DDL_DIRECTORY|DDL_EXCLUSIVE) filled with %d entries, expected %d\n",
1295 ok (
res > 0,
"SendMessage(LB_DIR, DDL_DIRECTORY|DDL_DRIVES|DDL_EXCLUSIVE, w*.c,) failed - 0x%08x\n",
GetLastError());
1299 ok (itemCount == itemCount_justDrives + itemCount_allDirs,
1300 "SendMessage(LB_DIR, DDL_DIRECTORY|DDL_DRIVES|DDL_EXCLUSIVE) filled with %d entries, expected %d\n",
1301 itemCount, itemCount_justDrives + itemCount_allDirs);
1302 ok(
res + 1 == itemCount,
"SendMessage(LB_DIR, DDL_DIRECTORY|DDL_DRIVES|DDL_EXCLUSIVE, w*.c) returned incorrect index!\n");
1304 for (
i = 0;
i < itemCount;
i++) {
1309 ok( driveletter >=
'a' && driveletter <=
'z',
"Drive letter not in range a..z, got ascii %d\n", driveletter);
1312 "Element %d (%s) does not fit expected [...]\n",
i,
pathBuffer);
1320 ok (
res == itemCount_justDrives -1,
"SendMessage(LB_DIR, DDL_DIRECTORY|DDL_DRIVES|DDL_EXCLUSIVE, %s) returned %d, expected %d\n",
1324 ok (itemCount ==
res + 1,
"SendMessage(LB_DIR) returned %d expected %d\n", itemCount,
res + 1);
1330 ok (
res >= 0,
"SendMessage(LB_DIR, DDL_DIRECTORY|DDL_DRIVES|DDL_EXCLUSIVE, w*.c,) failed - 0x%08x\n",
GetLastError());
1334 ok (itemCount == itemCount_justDrives,
1335 "SendMessage(LB_DIR, DDL_DIRECTORY|DDL_DRIVES|DDL_EXCLUSIVE) filled with %d entries, expected %d\n",
1336 itemCount, itemCount_justDrives);
1337 ok(
res + 1 == itemCount,
"SendMessage(LB_DIR, DDL_DIRECTORY|DDL_DRIVES|DDL_EXCLUSIVE, w*.c) returned incorrect index!\n");
1339 for (
i = 0;
i < itemCount;
i++) {
1344 ok( driveletter >=
'a' && driveletter <=
'z',
"Drive letter not in range a..z, got ascii %d\n", driveletter);
1357 #define ID_TEST_LABEL 1001 1358 #define ID_TEST_LISTBOX 1002 1364 "Contents of static control before DlgDirList.",
1424 int itemCount_allDirs;
1425 int itemCount_justFiles;
1426 int itemCount_justDrives;
1467 "expected conversion to uppercase, got %s\n",
pathBuffer);
1472 ok (
strcmp(
"default contents",
pathBuffer),
"DlgDirList() did not modify static control!\n");
1476 ok (itemCount > 0,
"DlgDirList() did NOT fill the listbox!\n");
1477 itemCount_justFiles = itemCount;
1480 for (
i = 0;
i < itemCount;
i++) {
1485 (*(
p-1) ==
'c' || *(
p-1) ==
'C') &&
1486 (*(
p-2) ==
'.')),
"Element %d (%s) does not fit requested w*.c\n",
i,
pathBuffer);
1495 ok (itemCount == 0,
"DlgDirList() DID fill the listbox!\n");
1501 ok (
res == 1,
"DlgDirList(*.c, DDL_DIRECTORY) failed - 0x%08x\n",
GetLastError());
1508 itemCount_allDirs = itemCount - itemCount_justFiles;
1509 ok (itemCount >= itemCount_justFiles,
1510 "DlgDirList(DDL_DIRECTORY) filled with %d entries, expected > %d\n",
1511 itemCount, itemCount_justFiles);
1516 for (
i = 0;
i < itemCount;
i++) {
1522 (*(
p-1) ==
'c' || *(
p-1) ==
'C') &&
1523 (*(
p-2) ==
'.')),
"Element %d (%s) does not fit requested w*.c\n",
i,
pathBuffer);
1533 ok (itemCount == itemCount_allDirs,
1534 "DlgDirList() incorrectly filled the listbox! (expected %d got %d)\n",
1535 itemCount_allDirs, itemCount);
1536 for (
i = 0;
i < itemCount;
i++) {
1540 "Element %d (%s) does not fit requested [...]\n",
i,
pathBuffer);
1557 "DlgDirList(DDL_DRIVES) filled with %d entries, expected at least %d\n",
1559 itemCount_justDrives = itemCount;
1562 for (
i = 0;
i < itemCount;
i++) {
1568 ok( driveletter >=
'a' && driveletter <=
'z',
"Drive letter not in range a..z, got ascii %d\n", driveletter);
1569 if (!(driveletter >=
'a' && driveletter <=
'z')) {
1572 itemCount_justDrives--;
1583 ok (itemCount == itemCount_justDrives,
"DlgDirList() incorrectly filled the listbox!\n");
1590 ok (
res == 1,
"DlgDirList(*.c, DDL_DIRECTORY|DDL_DRIVES) failed - 0x%08x\n",
GetLastError());
1597 ok (itemCount == itemCount_justFiles + itemCount_justDrives + itemCount_allDirs,
1598 "DlgDirList(DDL_DIRECTORY|DDL_DRIVES) filled with %d entries, expected %d\n",
1599 itemCount, itemCount_justFiles + itemCount_justDrives + itemCount_allDirs);
1605 for (
i = 0;
i < itemCount;
i++) {
1611 ok( driveletter >=
'a' && driveletter <=
'z',
"Drive letter not in range a..z, got ascii %d\n", driveletter);
1615 (*(
p-1) ==
'c' || *(
p-1) ==
'C') &&
1616 (*(
p-2) ==
'.')),
"Element %d (%s) does not fit requested w*.c\n",
i,
pathBuffer);
1624 ok (
res == 1,
"DlgDirList(%s, DDL_DIRECTORY|DDL_DRIVES) returned %d expected 1\n",
BAD_EXTENSION,
res);
1627 ok (itemCount == itemCount_justDrives + itemCount_allDirs,
1628 "DlgDirList() incorrectly filled the listbox! (expected %d got %d)\n",
1629 itemCount_justDrives + itemCount_allDirs, itemCount);
1637 ok (
res == 1,
"DlgDirList(*.c, DDL_DIRECTORY|DDL_EXCLUSIVE) failed - 0x%08x\n",
GetLastError());
1641 ok (itemCount == itemCount_allDirs,
1642 "DlgDirList(DDL_DIRECTORY|DDL_EXCLUSIVE) filled with %d entries, expected %d\n",
1643 itemCount, itemCount_allDirs);
1656 ok (
res == 1,
"DlgDirList(%s, DDL_DIRECTORY|DDL_EXCLUSIVE) returned %d expected 1\n",
BAD_EXTENSION,
res);
1659 ok (itemCount == itemCount_allDirs,
"DlgDirList() incorrectly filled the listbox!\n");
1666 ok (
res == 1,
"DlgDirList(*.c, DDL_DIRECTORY|DDL_DRIVES|DDL_EXCLUSIVE) failed - 0x%08x\n",
GetLastError());
1670 ok (itemCount == itemCount_justDrives + itemCount_allDirs,
1671 "DlgDirList(DDL_DIRECTORY|DDL_EXCLUSIVE) filled with %d entries, expected %d\n",
1672 itemCount, itemCount_justDrives + itemCount_allDirs);
1674 for (
i = 0;
i < itemCount;
i++) {
1679 ok( driveletter >=
'a' && driveletter <=
'z',
"Drive letter not in range a..z, got ascii %d\n", driveletter);
1682 "Element %d (%s) does not fit expected [...]\n",
i,
pathBuffer);
1690 ok (
res == 1,
"DlgDirList(%s, DDL_DIRECTORY|DDL_DRIVES|DDL_EXCLUSIVE) returned %d expected 1\n",
BAD_EXTENSION,
res);
1693 ok (itemCount == itemCount_justDrives + itemCount_allDirs,
1694 "DlgDirList() incorrectly filled the listbox!\n");
1701 ok (
res != 0,
"DlgDirList(*, DDL_DIRECTORY|DDL_DRIVES) failed - 0x%08x\n",
GetLastError());
1708 "DlgDirSelectEx() with no selection modified last error code from 0xdeadbeef to 0x%08x\n",
1710 ok (
res == 0,
"DlgDirSelectEx() with no selection returned %d, expected 0\n",
res);
1717 for (
i = 0;
i < itemCount;
i++) {
1723 if (!
strstr(itemBuffer,
".exe"))
continue;
1725 ok (
res ==
i,
"SendMessageA(LB_SETCURSEL, %d) failed\n",
i);
1726 if (
sscanf(itemBuffer,
"[-%c-]", &driveletter) == 1) {
1731 "DlgDirSelectEx() with selection at %d modified last error code from 0xdeadbeef to 0x%08x\n",
1733 ok(
res == 1,
"DlgDirSelectEx() thinks %s (%s) is not a drive/directory!\n", itemBuffer,
pathBuffer);
1737 "%d: got \"%s\" expected \"%c:\"\n",
i,
pathBuffer, driveletter);
1738 }
else if (itemBuffer[0] ==
'[') {
1743 "DlgDirSelectEx() with selection at %d modified last error code from 0xdeadbeef to 0x%08x\n",
1745 ok(
res == 1,
"DlgDirSelectEx() thinks %s (%s) is not a drive/directory!\n", itemBuffer,
pathBuffer);
1749 ok (*(
p-1) ==
'\\',
"DlgDirSelectEx did NOT tack on a backslash to dir, got %s\n",
pathBuffer);
1751 tempBuffer[0] =
'[';
1754 ok (!
strcmp(tempBuffer, itemBuffer),
"Formatted directory should be %s, got %s\n", tempBuffer, itemBuffer);
1760 "DlgDirSelectEx() with selection at %d modified last error code from 0xdeadbeef to 0x%08x\n",
1762 ok(
res == 0,
"DlgDirSelectEx() thinks %s (%s) is a drive/directory!\n", itemBuffer,
pathBuffer);
1767 strcpy(tempBuffer, itemBuffer);
1781 for (
i = 0;
i < itemCount;
i++) {
1788 ok (
res ==
i,
"SendMessage(LB_SETCURSEL, %d) failed\n",
i);
1789 if (
sscanf(itemBuffer,
"[-%c-]", &driveletter) == 1) {
1794 "DlgDirSelectEx() with selection at %d modified last error code from 0xdeadbeef to 0x%08x\n",
1796 ok(
res == 1,
"DlgDirSelectEx() thinks %s (%s) is not a drive/directory!\n", itemBuffer,
pathBuffer);
1800 "%d: got \"%s\" expected \"%c:\"\n",
i,
pathBuffer, driveletter);
1801 }
else if (itemBuffer[0] ==
'[') {
1806 "DlgDirSelectEx() with selection at %d modified last error code from 0xdeadbeef to 0x%08x\n",
1808 ok(
res == 1,
"DlgDirSelectEx() thinks %s (%s) is not a drive/directory!\n", itemBuffer,
pathBuffer);
1812 ok (*(
p-1) ==
'\\',
"DlgDirSelectEx did NOT tack on a backslash to dir, got %s\n",
pathBuffer);
1814 tempBuffer[0] =
'[';
1817 ok (!
strcmp(tempBuffer, itemBuffer),
"Formatted directory should be %s, got %s\n", tempBuffer, itemBuffer);
1823 "DlgDirSelectEx() with selection at %d modified last error code from 0xdeadbeef to 0x%08x\n",
1825 ok(
res == 0,
"DlgDirSelectEx() thinks %s (%s) is a drive/directory!\n", itemBuffer,
pathBuffer);
1830 strcpy(tempBuffer, itemBuffer);
1839 ok(
res ||
broken(!
res) ,
"DlgDirList failed to list C:\\ folders\n");
1841 "DlgDirList set the invalid path spec '%s', expected '*'\n",
pathBuffer);
1845 ok(
res ||
broken(!
res) ,
"DlgDirList failed to list C:\\* folders\n");
1847 "DlgDirList set the invalid path spec '%s', expected '*'\n",
pathBuffer);
1853 ok(!
res,
"DlgDirList should have failed with 0 but %d was returned\n",
res);
1855 "GetLastError should return 0x589, got 0x%X\n",
GetLastError());
1862 static const DWORD styles[] =
1940 if (!pGetListBoxInfo)
1942 win_skip(
"GetListBoxInfo() not available\n");
1953 ret = pGetListBoxInfo(listbox);
1964 static const DWORD styles[] =
1980 ok(items_size >= 100,
"expected at least 100, got %d\n", items_size);
1983 ok(
ret == items_size,
"expected %d, got %d\n", items_size,
ret);
1987 ok(
ret == items_size,
"expected %d, got %d\n", items_size,
ret);
1991 ok(
ret == items_size,
"expected %d, got %d\n", items_size,
ret);
1997 ok(
ret == 0,
"unexpected return value %d\n",
ret);
2001 for (
j = 0;
j < items_size - 1;
j++)
2004 ok(
ret ==
j,
"expected %d, got %d\n",
j,
ret);
2010 ok(
ret == items_size,
"expected %d, got %d\n", items_size,
ret);
2014 ok(
ret == items_size - 1,
"expected %d, got %d\n", items_size - 1,
ret);
2016 ok(
ret == items_size,
"expected %d, got %d\n", items_size,
ret);
2018 ok(
ret > items_size,
"expected it to grow past %d, got %d\n", items_size,
ret);
2035 ok(capture == listbox,
"got %p expected %p\n", capture, listbox);
2041 ok(capture ==
NULL,
"got %p\n", capture);
2060 ok(
res == 0,
"Got wrong initial horizontal extent: %u\n",
res);
2065 ok(br ==
TRUE,
"GetScrollInfo failed\n");
2066 ok(
sinfo.nMin == 0,
"got wrong min: %u\n",
sinfo.nMin);
2067 ok(
sinfo.nMax == 100,
"got wrong max: %u\n",
sinfo.nMax);
2069 "List box should not have a horizontal scroll bar\n");
2075 ok(
res == 64,
"Got wrong horizontal extent: %u\n",
res);
2080 ok(br ==
TRUE,
"GetScrollInfo failed\n");
2081 ok(
sinfo.nMin == 0,
"got wrong min: %u\n",
sinfo.nMin);
2082 ok(
sinfo.nMax == 100,
"got wrong max: %u\n",
sinfo.nMax);
2084 "List box should not have a horizontal scroll bar\n");
2090 ok(
res == 184,
"Got wrong horizontal extent: %u\n",
res);
2095 ok(br ==
TRUE,
"GetScrollInfo failed\n");
2096 ok(
sinfo.nMin == 0,
"got wrong min: %u\n",
sinfo.nMin);
2097 ok(
sinfo.nMax == 100,
"got wrong max: %u\n",
sinfo.nMax);
2099 "List box should not have a horizontal scroll bar\n");
2107 ok(
res == 0,
"Got wrong initial horizontal extent: %u\n",
res);
2112 ok(br ==
TRUE,
"GetScrollInfo failed\n");
2113 ok(
sinfo.nMin == 0,
"got wrong min: %u\n",
sinfo.nMin);
2114 ok(
sinfo.nMax == 100,
"got wrong max: %u\n",
sinfo.nMax);
2116 "List box should not have a horizontal scroll bar\n");
2122 ok(
res == 64,
"Got wrong horizontal extent: %u\n",
res);
2127 ok(br ==
TRUE,
"GetScrollInfo failed\n");
2128 ok(
sinfo.nMin == 0,
"got wrong min: %u\n",
sinfo.nMin);
2129 ok(
sinfo.nMax == 63,
"got wrong max: %u\n",
sinfo.nMax);
2131 "List box should not have a horizontal scroll bar\n");
2137 ok(
res == 184,
"Got wrong horizontal extent: %u\n",
res);
2142 ok(br ==
TRUE,
"GetScrollInfo failed\n");
2143 ok(
sinfo.nMin == 0,
"got wrong min: %u\n",
sinfo.nMin);
2144 ok(
sinfo.nMax == 183,
"got wrong max: %u\n",
sinfo.nMax);
2146 "List box should have a horizontal scroll bar\n");
2151 ok(
res == 0,
"Got wrong horizontal extent: %u\n",
res);
2156 ok(br ==
TRUE,
"GetScrollInfo failed\n");
2157 ok(
sinfo.nMin == 0,
"got wrong min: %u\n",
sinfo.nMin);
2158 ok(
sinfo.nMax == 0,
"got wrong max: %u\n",
sinfo.nMax);
2160 "List box should not have a horizontal scroll bar\n");
2168 ok(
res == 0,
"Got wrong initial horizontal extent: %u\n",
res);
2173 ok(br ==
TRUE,
"GetScrollInfo failed\n");
2174 ok(
sinfo.nMin == 0,
"got wrong min: %u\n",
sinfo.nMin);
2175 ok(
sinfo.nMax == 0,
"got wrong max: %u\n",
sinfo.nMax);
2177 "List box should have a horizontal scroll bar\n");
2183 ok(
res == 64,
"Got wrong horizontal extent: %u\n",
res);
2188 ok(br ==
TRUE,
"GetScrollInfo failed\n");
2189 ok(
sinfo.nMin == 0,
"got wrong min: %u\n",
sinfo.nMin);
2190 ok(
sinfo.nMax == 63,
"got wrong max: %u\n",
sinfo.nMax);
2192 "List box should have a horizontal scroll bar\n");
2198 ok(
res == 184,
"Got wrong horizontal extent: %u\n",
res);
2203 ok(br ==
TRUE,
"GetScrollInfo failed\n");
2204 ok(
sinfo.nMin == 0,
"got wrong min: %u\n",
sinfo.nMin);
2205 ok(
sinfo.nMax == 183,
"got wrong max: %u\n",
sinfo.nMax);
2207 "List box should have a horizontal scroll bar\n");
2212 ok(
res == 0,
"Got wrong horizontal extent: %u\n",
res);
2217 ok(br ==
TRUE,
"GetScrollInfo failed\n");
2218 ok(
sinfo.nMin == 0,
"got wrong min: %u\n",
sinfo.nMin);
2219 ok(
sinfo.nMax == 0,
"got wrong max: %u\n",
sinfo.nMax);
2221 "List box should have a horizontal scroll bar\n");
2250 static const DWORD invalid_styles[] =
2259 static const UINT invalid_idx[] = { -2, 2 };
2260 static const UINT valid_idx[] = { 0, 1 };
2269 ok(listbox !=
NULL,
"Failed to create ListBox window.\n");
2272 ok(
ret == 0,
"Unexpected return value %d.\n",
ret);
2274 ok(
ret == 1,
"Unexpected return value %d.\n",
ret);
2276 ok(
ret == 2,
"Unexpected return value %d.\n",
ret);
2300 ok(
ret ==
sizeof(
data),
"Unexpected return value %d.\n",
ret);
2304 ok(
ret ==
sizeof(
data),
"Unexpected return value %d.\n",
ret);
2308 ok(
ret == 0,
"Unexpected return value %d.\n",
ret);
2341 ok(
parent !=
NULL,
"Failed to create parent window.\n");
2349 ok(listbox !=
NULL,
"Failed to create a listbox.\n");
2352 ok((
style & invalid_styles[
i]) == invalid_styles[
i],
"%u: unexpected window styles %#x.\n",
i,
style);
2366 { 1, 1, 1,
LB_ERR}, {0,0,0,0},
2367 { 2, 2, 2,
LB_ERR}, {0,0,0,0},
2372 { 1, 1, 1,
LB_ERR}, {0,0,0,0},
2373 { 2, 2, 2,
LB_ERR}, {0,0,0,0},
2376 {{ 0,
LB_ERR, 0, 0}, {0,0,0,0},
2377 { 1, 1, 1, 1}, {0,0,0,0},
2378 { 2, 1, 2, 1}, {0,0,0,0},
2379 { 0,
LB_ERR, 0, 2}, {0,0,0,0}};
2382 { 1, 1, 1,
LB_ERR}, {0,0,0,0},
2383 { 2, 2, 2,
LB_ERR}, {0,0,0,0},
2386 {{ 0,
LB_ERR, 0, 0}, {0,0,0,0},
2387 { 1, 1, 1, 1}, {0,0,0,0},
2388 { 2, 2, 2, 1}, {0,0,0,0},
2389 { 0,
LB_ERR, 0, 2}, {0,0,0,0}};
2392 { 1, 1, 1,
LB_ERR}, {0,0,0,0},
2393 { 2, 2, 2,
LB_ERR}, {0,0,0,0},
2396 {{ 0,
LB_ERR, 0, 0}, {0,0,0,0},
2397 { 1, 1, 1, 1}, {0,0,0,0},
2398 { 2, 2, 2, 1}, {0,0,0,0},
2399 { 0,
LB_ERR, 0, 2}, {0,0,0,0}};
2402 { 1, 1, 1,
LB_ERR}, {0,0,0,0},
2403 { 2, 2, 2,
LB_ERR}, {0,0,0,0},
2406 trace (
" Testing single selection...\n");
2408 trace (
" ... with NOSEL\n");
2410 trace (
" ... LBS_NODATA variant ...\n");
2412 trace (
" ... with NOSEL\n");
2415 trace (
" Testing multiple selection...\n");
2417 trace (
" ... with NOSEL\n");
2419 trace (
" ... LBS_NODATA variant ...\n");
2421 trace (
" ... with NOSEL\n");
2424 trace (
" Testing extended selection...\n");
2426 trace (
" ... with NOSEL\n");
2428 trace (
" ... LBS_NODATA variant ...\n");
2430 trace (
" ... with NOSEL\n");
2433 trace (
" Testing extended and multiple selection...\n");
2435 trace (
" ... with NOSEL\n");
2437 trace (
" ... LBS_NODATA variant ...\n");
2439 trace (
" ... with NOSEL\n");
static void test_listbox_item_data(void)
HGDIOBJ WINAPI GetStockObject(_In_ int)
static DWORD(WINAPI *pGetListBoxInfo)(HWND)
#define ERROR_INVALID_PARAMETER
static void test_itemfrompoint(void)
HDC WINAPI GetDCEx(_In_opt_ HWND, _In_opt_ HRGN, _In_ DWORD)
static LRESULT WINAPI main_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
#define LB_FINDSTRINGEXACT
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
#define LB_SETHORIZONTALEXTENT
#define WideCharToMultiByte
static void listbox_query(HWND handle, struct listbox_stat *results)
static HWND create_listbox(DWORD add_style, HWND parent)
char * strcat(char *DstString, const char *SrcString)
#define LB_GETHORIZONTALEXTENT
ACPI_SIZE strlen(const char *String)
#define ERROR_SETCOUNT_ON_BAD_LB
static void test_LB_SELITEMRANGE(void)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
GLdouble GLdouble GLdouble r
char * wine_dbgstr_w(const wchar_t *wstr)
char * strstr(char *String1, char *String2)
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
static NTSTATUS zero_data(device_extension *Vcb, fcb *fcb, uint64_t start, uint64_t length, PIRP Irp, LIST_ENTRY *rollback)
static void buttonpress(HWND handle, WORD x, WORD y)
BOOL WINAPI UpdateWindow(_In_ HWND)
static void check(DWORD style, const struct listbox_test test)
static LRESULT CALLBACK listbox_container_window_procA(HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
static void test_listbox_dlgdir(void)
#define INVALID_HANDLE_VALUE
DWORD WINAPI GetLastError(VOID)
GLint GLint GLint GLint GLint x
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
struct listbox_stat sel sel_todo
BOOL WINAPI DestroyWindow(_In_ HWND)
static LRESULT WINAPI listbox_subclass_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
static const char BAD_EXTENSION[]
#define LB_GETANCHORINDEX
#define LBS_OWNERDRAWFIXED
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
static BOOL on_listbox_container_create(HWND hwnd, LPCREATESTRUCTA lpcs)
GLenum GLuint GLenum GLsizei const GLchar * buf
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED LPLOOKUPSERVICE_COMPLETION_ROUTINE HANDLE * handle
LONG WINAPI GetWindowLongA(_In_ HWND, _In_ int)
static BOOL RegisterListboxWindowClass(HINSTANCE hInst)
#define LBS_NOINTEGRALHEIGHT
static UINT WPARAM LPARAM lparam
#define listbox_ok(t, s, got)
HWND WINAPI GetCapture(void)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
static void test_WM_MEASUREITEM(void)
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI IsRectEmpty(_In_ LPCRECT)
BOOL WINAPI CreateDirectoryA(IN LPCSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
HWND WINAPI GetDesktopWindow(void)
static int strcmp_aw(LPCWSTR strw, const char *stra)
static void test_LB_SETSEL(void)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
static void test_set_count(void)
_Check_return_ _CRTIMP int __cdecl sscanf(_In_z_ const char *_Src, _In_z_ _Scanf_format_string_ const char *_Format,...)
BOOL WINAPI GetTextMetricsA(_In_ HDC, _Out_ LPTEXTMETRICA)
static void test_extents(void)
static void test_GetListBoxInfo(void)
BOOL WINAPI DlgDirSelectExA(_In_ HWND hwndDlg, _Out_writes_(chCount) LPSTR lpString, _In_ int chCount, _In_ int idListBox)
static HWND create_parent(void)
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 GLint GLint j
#define GetWindowLongPtrA
static void test_listbox_height(void)
static void test_init_storage(void)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static void test_listbox_LB_DIR(void)
int WINAPI GetScrollPos(_In_ HWND, _In_ int)
BOOL WINAPI ValidateRect(_In_opt_ HWND, _In_opt_ LPCRECT)
const char * wine_dbgstr_rect(const RECT *rect)
static void test_changing_selection_styles(void)
int WINAPI GetClipBox(_In_ HDC, _Out_ LPRECT)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
static struct _test_info results[8]
static void test_ownerdraw(void)
BOOL WINAPI GetScrollInfo(_In_ HWND, _In_ int, _Inout_ LPSCROLLINFO)
static void test_missing_lbuttonup(void)
GLsizei const GLchar *const * strings
#define FILE_ATTRIBUTE_NORMAL
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
BOOL WINAPI GetUpdateRect(_In_ HWND, _Out_opt_ LPRECT, _In_ BOOL)
BOOL WINAPI SetCurrentDirectoryA(IN LPCSTR lpPathName)
#define SetWindowLongPtrA
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
static void keypress(HWND handle, WPARAM keycode, BYTE scancode, BOOL extended)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)
static void test_LB_SETCURSEL(void)
struct listbox_stat step step_todo
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
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
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
#define LBS_DISABLENOSCROLL
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
DWORD WINAPI GetCurrentDirectoryA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
BOOL WINAPI RemoveDirectoryA(IN LPCSTR lpPathName)
LONG WINAPI SetWindowLongA(_In_ HWND, _In_ int, _In_ LONG)
int WINAPI DlgDirListA(_In_ HWND, _Inout_ LPSTR, _In_ int, _In_ int, _In_ UINT)
GLint GLint GLint GLint GLint GLint y
#define KEYEVENTF_EXTENDEDKEY
#define MultiByteToWideChar
char * strchr(const char *String, int ch)
#define LBS_OWNERDRAWVARIABLE
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
#define LB_GETLISTBOXINFO
static int lb_getlistboxinfo
char * strcpy(char *DstString, const char *SrcString)
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)
#define WS_OVERLAPPEDWINDOW
int strcmp(const char *String1, const char *String2)
BOOL WINAPI SetForegroundWindow(_In_ HWND)
#define GetProcAddress(x, y)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define CreateFileA(a, b, c, d, e, f, g)
#define listbox_test_query(exp, got)
#define ERROR_NO_WILDCARD_CHARACTERS
static const char * strw(LPCWSTR x)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
struct listbox_stat click click_todo
#define HeapFree(x, y, z)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
HGDIOBJ WINAPI GetCurrentObject(_In_ HDC, _In_ UINT)
struct listbox_stat init init_todo
static UINT WPARAM wparam
static void check_item_height(void)
static void test_LBS_NODATA(void)