25#ifndef SPI_GETDESKWALLPAPER
26#define SPI_GETDESKWALLPAPER 0x0073
30#define WM_SYSTIMER 0x0118
33#define LONG_PTR INT_PTR
34#define ULONG_PTR UINT_PTR
44static BOOL (
WINAPI *pUpdateLayeredWindowIndirect)(
HWND,
const UPDATELAYEREDWINDOWINFO*);
52static BOOL (
WINAPI *pFlashWindowEx)( PFLASHWINFO pfwi );
71#define COUNTOF(arr) (sizeof(arr)/sizeof(arr[0]))
75 trace(
"Reserved=%d,%d MaxSize=%d,%d MaxPos=%d,%d MinTrack=%d,%d MaxTrack=%d,%d\n",
88 int min_timeout = 100;
126 ok(
res == ga_parent,
"Wrong result for GA_PARENT %p expected %p\n",
res, ga_parent );
129 ok(
res == gwl_parent,
"Wrong result for GWL_HWNDPARENT %p expected %p\n",
res, gwl_parent );
131 ok(
res == get_parent,
"Wrong result for GetParent %p expected %p\n",
res, get_parent );
133 ok(
res == gw_owner,
"Wrong result for GW_OWNER %p expected %p\n",
res, gw_owner );
137 ok(
res == ga_root,
"Wrong result for GA_ROOT %p expected %p\n",
res, ga_root );
139 ok(
res == ga_root_owner,
"Wrong result for GA_ROOTOWNER %p expected %p\n",
res, ga_root_owner );
143#define check_wnd_state(a,b,c,d) check_wnd_state_(__FILE__,__LINE__,a,b,c,d)
159#define check_active_state(a,b,c) check_active_state_(__FILE__,__LINE__,a,b,c)
188 trace(
"EnumChildProc on %p\n", hwndChild);
196 trace(
"EnumChildProc1 on %p\n", hwndChild);
205 ok(
ret != 0,
"Creation failed\n" );
224 ok( !
test,
"WS_CHILD without parent created\n" );
263 trace(
"created child of desktop %p\n",
test );
281 trace(
"created child of child %p\n",
test );
313 trace(
"created owned top-level %p\n",
test );
341 trace(
"created owned popup %p\n",
test );
355 trace(
"created top-level owned by child %p\n",
test );
365 trace(
"created popup owned by desktop %p\n",
test );
375 trace(
"created popup owned by child %p\n",
test );
385 trace(
"created WS_CHILD popup %p\n",
test );
395 trace(
"created owned WS_CHILD popup %p\n",
test );
404 trace(
"testing parent changes\n" );
412 ok( !
ret,
"Set GWL_HWNDPARENT succeeded on desktop\n" );
437 ok(
ret == 0,
"GWL_HWNDPARENT return value %p expected 0\n",
ret );
441 win_skip(
"Test creates circular window tree under Win9x/WinMe\n" );
444 ok(
ret == 0,
"GWL_HWNDPARENT return value %p expected 0\n",
ret );
457 ok(
ret == 0,
"GWL_HWNDPARENT return value %p expected 0\n",
ret );
474 ok(
ret == 0,
"GWL_HWNDPARENT return value %p expected 0\n",
ret );
495 ok(
ret == desktop,
"SetParent return value %p expected %p\n",
ret, desktop );
508 ok(
ret == desktop,
"SetParent return value %p expected %p\n",
ret, desktop );
520 win_skip(
"Test crashes on Win9x/WinMe\n" );
525 trace(
"created owned popup %p\n",
test );
528 ok(
ret == desktop,
"SetParent return value %p expected %p\n",
ret, desktop );
541 trace(
"created owner %p and popup %p\n", owner,
test );
543 ok(
ret == desktop,
"SetParent return value %p expected %p\n",
ret, desktop );
552 ok( !
IsWindow(owner),
"Owner %p not destroyed\n", owner );
558 trace(
"created owner %p and popup %p\n", owner,
test );
566 trace(
"created owner %p and popup %p\n", owner,
test );
568 ok(
ret == 0,
"GWL_HWNDPARENT return value %p expected 0\n",
ret );
572 ok( !
IsWindow(owner),
"Owner %p not destroyed\n", owner );
589 "EnumChildWindows should have returned FALSE\n" );
590 ok( numChildren == 0,
"numChildren should be 0 got %d\n", numChildren );
594 ok(
ret == desktop,
"SetParent return value %p expected %p\n",
ret, desktop );
598 "EnumChildWindows should have returned TRUE\n" );
599 ok( numChildren == 1,
"numChildren should be 1 got %d\n", numChildren );
604 "EnumChildWindows should have returned FALSE\n" );
605 ok( numChildren == 2,
"numChildren should be 2 got %d\n", numChildren );
612 "EnumChildWindows should have returned TRUE\n" );
613 ok( numChildren == 1,
"numChildren should be 1 got %d\n", numChildren );
617 ok(
ret == desktop,
"SetParent return value %p expected %p\n",
ret, desktop );
620 "EnumChildWindows should have returned FALSE\n" );
621 ok( numChildren == 2,
"numChildren should be 2 got %d\n", numChildren );
625 ok(
ret == owner,
"SetParent return value %p expected %p\n",
ret, owner );
628 "EnumChildWindows should have returned TRUE\n" );
629 ok( numChildren == 1,
"numChildren should be 1 got %d\n", numChildren );
633 "EnumChildWindows should have found %p and returned FALSE\n",
child );
639 "EnumChildWindows should have found %p and returned FALSE\n",
child );
684 if (pGetGUIThreadInfo)
690 "GetGUIThreadInfo failed without message queue\n" );
694 ok( !
ret,
"GetGUIThreadInfo succeeded with wrong size\n" );
704 ok(
ret,
"EnumThreadWindows should have returned TRUE\n" );
708 0, 0, 100, 100, 0, 0, 0,
NULL );
711 ok(
ret,
"EnumThreadWindows should have returned TRUE\n" );
716 0, 0, 100, 100, 0, 0, 0,
NULL );
721 0, 0, 100, 100, 0, 0, 0,
NULL );
724 ok( !
ret,
"EnumThreadWindows should have returned FALSE\n" );
763 ok(winpos->
x >= -32768 && winpos->
x <= 32767,
"bad winpos->x %d\n", winpos->
x);
764 ok(winpos->
y >= -32768 && winpos->
y <= 32767,
"bad winpos->y %d\n", winpos->
y);
769 ok((winpos->
cx >= 0 && winpos->
cx <= 32767) ||
771 "bad winpos->cx %d\n", winpos->
cx);
772 ok((winpos->
cy >= 0 && winpos->
cy <= 32767) ||
774 "bad winpos->cy %d\n", winpos->
cy);
783 ok(winpos->
x >= -32768 && winpos->
x <= 32767,
"bad winpos->x %d\n", winpos->
x);
784 ok(winpos->
y >= -32768 && winpos->
y <= 32767,
"bad winpos->y %d\n", winpos->
y);
786 ok((winpos->
cx >= 0 && winpos->
cx <= 32767) ||
788 "bad winpos->cx %d\n", winpos->
cx);
789 ok((winpos->
cy >= 0 && winpos->
cy <= 32767) ||
791 "bad winpos->cy %d\n", winpos->
cy);
817 ok(got_getminmaxinfo,
"main: WM_GETMINMAXINFO should have been received before WM_NCCREATE\n");
819 ok(!got_getminmaxinfo,
"main: WM_GETMINMAXINFO should NOT have been received before WM_NCCREATE\n");
835 ok(*
text == 0,
"expected empty string buffer %x\n", *
text);
861 ok(*
text == 0,
"expected empty string buffer %x\n", *
text);
885 ok(got_getminmaxinfo,
"tool: WM_GETMINMAXINFO should have been received before WM_NCCREATE\n");
887 ok(!got_getminmaxinfo,
"tool: WM_GETMINMAXINFO should NOT have been received before WM_NCCREATE\n");
895static const WCHAR mainclassW[] = {
'M',
'a',
'i',
'n',
'W',
'i',
'n',
'd',
'o',
'w',
'C',
'l',
'a',
's',
's',
'W',0};
946 RECT rcWindow, rcClient;
960 "wrong dwStyle: %08x != %08x for %p in hook %s\n",
966 "wrong dwExStyle: %08x != %08x for %p in hook %s\n",
970 ok(
info->dwWindowStatus ==
status,
"wrong dwWindowStatus: %04x != %04x active %p fg %p in hook %s\n",
973 ok(1,
"Just counting");
981 ok(
info->cxWindowBorders == (
unsigned)(rcClient.
left - rcWindow.
left),
982 "wrong cxWindowBorders %d != %d\n",
info->cxWindowBorders, rcClient.
left - rcWindow.
left);
985 "wrong cyWindowBorders %d != %d\n",
info->cyWindowBorders,
border);
989 ok(
info->wCreatorVersion == 0x0400 ||
990 info->wCreatorVersion == 0x0500 ,
991 "wrong wCreatorVersion %04x for %p in hook %s\n",
info->wCreatorVersion,
hwnd,
hook);
1058 RECT rc_window, rc_client, rc;
1071 rc_window.
right > 32768 || rc_window.
bottom > 32768)
return;
1078 "window rect does not match: style:exstyle=0x%08x:0x%08x, menu=%d, win=%s, calc=%s\n",
1085 "window rect does not match: style:exstyle=0x%08x:0x%08x, menu=%d, win=%s, calc=%s\n",
1093 "client rect does not match: style:exstyle=0x%08x:0x%08x, menu=%d client=%s, calc=%s\n",
1098 ok(
ret == 0,
"NULL rectangle returned %ld instead of 0\n",
ret);
1105 SetRect(&rc_client, 0, 0, 250, 150);
1106 rc_window = rc_client;
1114 "synthetic rect does not match: style:exstyle=0x%08x:0x%08x, menu=%d, client=%s, calc=%s\n",
1120 static const char *CBT_code_name[10] = {
1127 "HCBT_CLICKSKIPPED",
1131 const char *code_name = (nCode >= 0 && nCode <=
HCBT_SETFOCUS) ? CBT_code_name[nCode] :
"Unknown";
1138 static const RECT rc_null;
1148 ok(pGetWindowInfo(
hwnd, &
info),
"GetWindowInfo should not fail\n");
1155 "style of hwnd and style in the CREATESTRUCT do not match: %08x != %08x\n",
1164 "wrong result from GetParent %p: message window %p\n",
1190 "GA_ROOT is set to %p, expected %p\n", pGetAncestor(
hwnd,
GA_ROOT),
hwnd);
1194 "GA_ROOTOWNER should be set to hwndMessage at this point\n");
1201 ok(
EqualRect(&rc, &rc_null),
"window rect should be set to 0 HCBT_CREATEWND\n");
1203 ok(
EqualRect(&rc, &rc_null),
"client rect should be set to 0 on HCBT_CREATEWND\n");
1219 ok(pGetWindowInfo(
hwnd, &
info),
"GetWindowInfo should not fail\n");
1240 HWND hwnd1, hwnd2, hwnd3, hwnd4, hwnd5;
1241 HWND shellWindow, nextWnd;
1245 win_skip(
"Skipping shell window test on Win9x\n");
1255 trace(
"previous shell window: %p\n", shellWindow);
1265 skip(
"cannot get access to shell process\n" );
1273 ok(!
ret,
"DestroyWindow(shellWindow)\n");
1276 "got %u after DestroyWindow(shellWindow)\n",
error);
1280 ok(
ret,
"termination of previous shell process failed: GetLastError()=%d\n",
GetLastError());
1285 hwnd1 =
CreateWindowExA(0,
"#32770",
"TEST1",
WS_OVERLAPPEDWINDOW, 100, 100, 300, 200, 0, 0,
hinst, 0);
1286 trace(
"created window 1: %p\n", hwnd1);
1289 ok(
ret,
"first call to SetShellWindow(hwnd1)\n");
1291 ok(shellWindow==hwnd1,
"wrong shell window: %p\n", shellWindow);
1294 ok(!
ret,
"second call to SetShellWindow(hwnd1)\n");
1308 ok(!
ret,
"SetWindowExStyle(hwnd1, WS_EX_TOPMOST)\n");
1311 ok(
ret,
"DestroyWindow(hwnd1)\n");
1313 hwnd2 =
CreateWindowExA(
WS_EX_TOPMOST,
"#32770",
"TEST2",
WS_OVERLAPPEDWINDOW, 150, 250, 300, 200, 0, 0,
hinst, 0);
1314 trace(
"created window 2: %p\n", hwnd2);
1316 ok(!
ret,
"SetShellWindow(hwnd2) with WS_EX_TOPMOST\n");
1318 hwnd3 =
CreateWindowExA(0,
"#32770",
"TEST3",
WS_OVERLAPPEDWINDOW, 200, 400, 300, 200, 0, 0,
hinst, 0);
1319 trace(
"created window 3: %p\n", hwnd3);
1321 hwnd4 =
CreateWindowExA(0,
"#32770",
"TEST4",
WS_OVERLAPPEDWINDOW, 250, 500, 300, 200, 0, 0,
hinst, 0);
1322 trace(
"created window 4: %p\n", hwnd4);
1325 ok(nextWnd==hwnd3,
"wrong next window for hwnd4: %p - expected hwnd3\n", nextWnd);
1328 ok(
ret,
"SetShellWindow(hwnd4)\n");
1330 ok(shellWindow==hwnd4,
"wrong shell window: %p - expected hwnd4\n", shellWindow);
1333 ok(nextWnd==0,
"wrong next window for hwnd4: %p - expected 0\n", nextWnd);
1336 ok(
ret,
"SetWindowPos(hwnd4, HWND_TOPMOST)\n");
1339 ok(
ret,
"SetWindowPos(hwnd4, hwnd3\n");
1342 ok(!
ret,
"SetShellWindow(hwnd3)\n");
1344 ok(shellWindow==hwnd4,
"wrong shell window: %p - expected hwnd4\n", shellWindow);
1346 hwnd5 =
CreateWindowExA(0,
"#32770",
"TEST5",
WS_OVERLAPPEDWINDOW, 300, 600, 300, 200, 0, 0,
hinst, 0);
1347 trace(
"created window 5: %p\n", hwnd5);
1349 ok(
ret,
"SetWindowPos(hwnd4, hwnd5)\n");
1354 ok(nextWnd==0,
"wrong next window for hwnd4 after SetWindowPos(): %p - expected 0\n", nextWnd);
1373 static const WCHAR classW[] = {
'M',
'D',
'I',
'_',
'c',
'h',
'i',
'l',
'd',
'_',
'C',
'l',
'a',
's',
's',
'_',
'1',0};
1374 static const WCHAR titleW[] = {
'M',
'D',
'I',
' ',
'c',
'h',
'i',
'l',
'd',0};
1378 ok(frame_menu !=
NULL,
"Frame window didn't have a menu\n");
1380 mdi_cs.
szClass =
"MDI_child_Class_1";
1390 ok(mdi_child != 0,
"MDI child creation failed\n");
1392 ok(
id == first_id,
"wrong child id %ld\n",
id);
1395 ok(
hwnd == exp_hwnd,
"WM_MDIGETACTIVE should return %p, got %p\n", exp_hwnd,
hwnd);
1397 ok(!
IsWindow(mdi_child),
"WM_MDIDESTROY failed\n");
1399 mdi_cs.
style = 0x7fffffff;
1401 ok(mdi_child != 0,
"MDI child creation failed\n");
1403 ok(
id == first_id,
"wrong child id %ld\n",
id);
1405 ok(!
hwnd,
"WM_MDIGETACTIVE should return 0, got %p\n",
hwnd);
1407 ok(!
IsWindow(mdi_child),
"WM_MDIDESTROY failed\n");
1409 mdi_cs.
style = 0xffffffff;
1413 ok(!mdi_child,
"MDI child with WS_POPUP and with MDIS_ALLCHILDSTYLES should fail\n");
1417 ok(mdi_child != 0,
"MDI child creation failed\n");
1419 ok(
id == first_id,
"wrong child id %ld\n",
id);
1421 ok(!
hwnd,
"WM_MDIGETACTIVE should return 0, got %p\n",
hwnd);
1424 ok(!
IsWindow(mdi_child),
"WM_MDIDESTROY failed\n");
1439 ok(mdi_child != 0,
"MDI child creation failed\n");
1444 ok(
id == first_id,
"wrong child id %ld\n",
id);
1447 ok(
hwnd == exp_hwnd,
"WM_MDIGETACTIVE should return %p, got %p\n", exp_hwnd,
hwnd);
1450 ok(!
IsWindow(mdi_child),
"WM_MDIDESTROY failed\n");
1459 ok(mdi_child != 0,
"MDI child creation failed\n");
1461 ok(
id == first_id,
"wrong child id %ld\n",
id);
1464 ok(
hwnd == exp_hwnd,
"WM_MDIGETACTIVE should return %p, got %p\n", exp_hwnd,
hwnd);
1467 ok(!
IsWindow(mdi_child),
"WM_MDIDESTROY failed\n");
1475 ok(mdi_child != 0,
"MDI child creation failed\n");
1477 ok(
id == first_id,
"wrong child id %ld\n",
id);
1479 ok(!
hwnd,
"WM_MDIGETACTIVE should return 0, got %p\n",
hwnd);
1482 ok(!
IsWindow(mdi_child),
"WM_MDIDESTROY failed\n");
1492 ok(!mdi_child,
"MDI child with WS_POPUP and with MDIS_ALLCHILDSTYLES should fail\n");
1496 ok(mdi_child != 0,
"MDI child creation failed\n");
1498 ok(
id == first_id,
"wrong child id %ld\n",
id);
1500 ok(!
hwnd,
"WM_MDIGETACTIVE should return 0, got %p\n",
hwnd);
1503 ok(!
IsWindow(mdi_child),
"WM_MDIDESTROY failed\n");
1519 ok(mdi_child != 0,
"MDI child creation failed\n");
1524 ok(
id == first_id,
"wrong child id %ld\n",
id);
1527 ok(
hwnd == exp_hwnd,
"WM_MDIGETACTIVE should return %p, got %p\n", exp_hwnd,
hwnd);
1530 ok(!
IsWindow(mdi_child),
"WM_MDIDESTROY failed\n");
1539 ok(mdi_child != 0,
"MDI child creation failed\n");
1541 ok(
id == first_id,
"wrong child id %ld\n",
id);
1544 ok(
hwnd == exp_hwnd,
"WM_MDIGETACTIVE should return %p, got %p\n", exp_hwnd,
hwnd);
1547 ok(!
IsWindow(mdi_child),
"WM_MDIDESTROY failed\n");
1555 ok(mdi_child != 0,
"MDI child creation failed\n");
1557 ok(
id == first_id,
"wrong child id %ld\n",
id);
1560 ok(
hwnd == exp_hwnd,
"WM_MDIGETACTIVE should return %p, got %p\n", exp_hwnd,
hwnd);
1566 ok(!
IsWindow(mdi_child),
"WM_MDIDESTROY failed\n");
1574 ok(mdi_child != 0,
"MDI child creation failed\n");
1576 ok(
id == first_id,
"wrong child id %ld\n",
id);
1578 ok(!
hwnd,
"WM_MDIGETACTIVE should return 0, got %p\n",
hwnd);
1581 ok(!
IsWindow(mdi_child),
"WM_MDIDESTROY failed\n");
1591 ok(!mdi_child,
"MDI child with WS_POPUP and with MDIS_ALLCHILDSTYLES should fail\n");
1595 ok(mdi_child != 0,
"MDI child creation failed\n");
1597 ok(
id == first_id,
"wrong child id %ld\n",
id);
1599 ok(!
hwnd,
"WM_MDIGETACTIVE should return 0, got %p\n",
hwnd);
1602 ok(!
IsWindow(mdi_child),
"WM_MDIDESTROY failed\n");
1618 ok(mdi_child != 0,
"MDI child creation failed\n");
1623 ok(
id == first_id,
"wrong child id %ld\n",
id);
1626 ok(
hwnd == exp_hwnd,
"WM_MDIGETACTIVE should return %p, got %p\n", exp_hwnd,
hwnd);
1629 ok(!
IsWindow(mdi_child),
"WM_MDIDESTROY failed\n");
1641 ok(!mdi_child,
"WS_EX_MDICHILD with a not MDIClient parent should fail\n");
1650 ok(mdi_child != 0,
"MDI child creation failed\n");
1652 ok(
id == 0,
"wrong child id %ld\n",
id);
1655 ok(!
hwnd,
"WM_MDIGETACTIVE should return 0, got %p\n",
hwnd);
1664 ok(mdi_child != 0,
"MDI child creation failed\n");
1666 ok(
id == 0,
"wrong child id %ld\n",
id);
1668 ok(!
hwnd,
"WM_MDIGETACTIVE should return 0, got %p\n",
hwnd);
1679 ok(mdi_child != 0,
"MDI child creation failed\n");
1681 ok(
id == 0,
"wrong child id %ld\n",
id);
1683 ok(!
hwnd,
"WM_MDIGETACTIVE should return 0, got %p\n",
hwnd);
1687 trace(
"Creating maximized child with a caption\n");
1694 ok(mdi_child != 0,
"MDI child creation failed\n");
1696 ok(
id == 0,
"wrong child id %ld\n",
id);
1698 ok(!
hwnd,
"WM_MDIGETACTIVE should return 0, got %p\n",
hwnd);
1702 trace(
"Creating maximized child with a caption and a thick frame\n");
1709 ok(mdi_child != 0,
"MDI child creation failed\n");
1711 ok(
id == 0,
"wrong child id %ld\n",
id);
1713 ok(!
hwnd,
"WM_MDIGETACTIVE should return 0, got %p\n",
hwnd);
1720 HWND child_1, child_2, child_3, child_4;
1724 cs.szClass =
"MDI_child_Class_1";
1725 cs.szTitle =
"MDI child";
1735 ok(child_1 != 0,
"expected child_1 to be non NULL\n");
1737 ok(child_2 != 0,
"expected child_2 to be non NULL\n");
1739 ok(child_3 != 0,
"expected child_3 to be non NULL\n");
1741 ok(child_4 != 0,
"expected child_4 to be non NULL\n");
1750 "Unexpected initial order, should be: %p->%p->%p->%p\n",
1751 child_4, child_3, child_2, child_1);
1753 trace(
"Activate child next to %p\n", child_3);
1762 "Broken MDI child stack:\nexpected: %p->%p->%p->%p, but got: %p->%p->%p->%p\n",
1765 trace(
"Activate child previous to %p\n", child_1);
1774 "Broken MDI child stack:\nexpected: %p->%p->%p->%p, but got: %p->%p->%p->%p\n",
1821 ok(!
lstrcmpA(
cs->lpszClass,
"MDI_child_Class_1"),
"wrong class name\n");
1823 ok(!
lstrcmpA(
cs->lpszName,
"MDI child"),
"wrong title\n");
1829 "mdi_cs->style does not match (%08x)\n", mdi_cs->
style);
1843 ok(!(
cs->style &
WS_POPUP),
"WS_POPUP is not allowed\n");
1849 "cs->style does not match (%08x)\n",
cs->style);
1858 "cs->style does not match (%08x)\n",
cs->style);
1878 style &= ~WS_BORDER;
1890 trace(
"DefMDIChildProc returned:\n");
1926 trace(
"%s: x %d, y %d, cx %d, cy %d\n", (
msg ==
WM_NCCREATE) ?
"WM_NCCREATE" :
"WM_CREATE",
1932 ok(!
lstrcmpA(
cs->lpszClass,
"MDI_child_Class_2"),
"wrong class name\n");
1933 ok(!
lstrcmpA(
cs->lpszName,
"MDI child"),
"wrong title\n");
1945 ok(
cs->cy == 0,
"%d != 0\n",
cs->cy);
1964 style &= ~WS_BORDER;
1984 ok(
EqualRect(&rc1, &
rc2),
"rects do not match, window=%s pos=%s\n",
1990 ok(
EqualRect(&rc1, &
rc2),
"rects do not match, window=%s client=%s\n",
1999 trace(
"%s: %p after %p, x %d, y %d, cx %d, cy %d flags %08x\n",
2002 winpos->
x, winpos->
y, winpos->
cx, winpos->
cy, winpos->
flags);
2007 "DefWindowProc should not change WINDOWPOS: %p after %p, x %d, y %d, cx %d, cy %d flags %08x\n",
2009 winpos->
x, winpos->
y, winpos->
cx, winpos->
cy, winpos->
flags);
2052 trace(
"%p after %p, x %d, y %d, cx %d, cy %d flags %08x\n",
2054 winpos->
x, winpos->
y, winpos->
cx, winpos->
cy, winpos->
flags);
2058 trace(
"%p after %p, x %d, y %d, cx %d, cy %d flags %08x\n",
2060 winpos->
x, winpos->
y, winpos->
cx, winpos->
cy, winpos->
flags);
2063 "DefWindowProc should not change WINDOWPOS values\n");
2110 HMENU frame_menu, child_menu;
2114 mdi_hwndMain =
CreateWindowExA(0,
"MDI_parent_Class",
"MDI parent window",
2137 mdi_hwndMain, 0, 0, &client_cs);
2146 ok(mdi_child != 0,
"MDI child creation failed\n");
2149 SetMenu(mdi_hwndMain, frame_menu);
2151 ok(
GetMenuItemCount(frame_menu) == 0,
"Frame menu should be empty after child maximize, but has %u\n",
2157 ok(
GetMenuItemCount(frame_menu) == 0,
"Frame menu should be empty after WM_MDISETMENU, but has %u\n",
2162 ok(
GetMenuItemCount(frame_menu) == 0,
"Frame menu should be empty after child restored, but has %u items\n",
2172 ok(
ret,
"style %#x: GetScrollInfo(SB_HORZ) failed\n",
style[
i]);
2173 ok(si.
nPage == 0,
"expected 0\n");
2174 ok(si.
nPos == 0,
"expected 0\n");
2176 ok(si.
nMin == 0,
"expected 0\n");
2177 ok(si.
nMax == 100,
"expected 100\n");
2180 ok(!
ret,
"style %#x: GetScrollInfo(SB_HORZ) should fail\n",
style[
i]);
2185 ok(
ret,
"style %#x: GetScrollInfo(SB_VERT) failed\n",
style[
i]);
2186 ok(si.
nPage == 0,
"expected 0\n");
2187 ok(si.
nPos == 0,
"expected 0\n");
2189 ok(si.
nMin == 0,
"expected 0\n");
2190 ok(si.
nMax == 100,
"expected 100\n");
2193 ok(!
ret,
"style %#x: GetScrollInfo(SB_VERT) should fail\n",
style[
i]);
2202 ok(
ret,
"style %#x: GetScrollInfo(SB_HORZ) failed\n",
style[
i]);
2203 ok(si.
nPage == 0,
"expected 0\n");
2204 ok(si.
nPos == 0,
"expected 0\n");
2206 ok(si.
nMin == 0,
"expected 0\n");
2207 ok(si.
nMax == 100,
"expected 100\n");
2210 ok(!
ret,
"style %#x: GetScrollInfo(SB_HORZ) should fail\n",
style[
i]);
2215 ok(
ret,
"style %#x: GetScrollInfo(SB_VERT) failed\n",
style[
i]);
2216 ok(si.
nPage == 0,
"expected 0\n");
2217 ok(si.
nPos == 0,
"expected 0\n");
2219 ok(si.
nMin == 0,
"expected 0\n");
2220 ok(si.
nMax == 100,
"expected 100\n");
2223 ok(!
ret,
"style %#x: GetScrollInfo(SB_VERT) should fail\n",
style[
i]);
2234 if (
msg.message == 0x003f)
2236 ok(
msg.hwnd ==
mdi_client,
"message 0x003f should be posted to mdiclient\n");
2240 ok(
msg.hwnd !=
mdi_client,
"message %04x should not be posted to mdiclient\n",
msg.message);
2243 ok(gotit,
"message 0x003f should appear after SetWindowPos\n");
2250 ok(
ret,
"style %#x: GetScrollInfo(SB_HORZ) failed\n",
style[
i]);
2252 ok(si.
nPage != 0,
"expected !0\n");
2253 ok(si.
nPos == 0,
"expected 0\n");
2255 ok(si.
nMin != 0,
"expected !0\n");
2256 ok(si.
nMax != 100,
"expected !100\n");
2259 ok(!
ret,
"style %#x: GetScrollInfo(SB_HORZ) should fail\n",
style[
i]);
2264 ok(
ret,
"style %#x: GetScrollInfo(SB_VERT) failed\n",
style[
i]);
2266 ok(si.
nPage != 0,
"expected !0\n");
2267 ok(si.
nPos == 0,
"expected 0\n");
2269 ok(si.
nMin != 0,
"expected !0\n");
2270 ok(si.
nMax != 100,
"expected !100\n");
2273 ok(!
ret,
"style %#x: GetScrollInfo(SB_VERT) should fail\n",
style[
i]);
2280 SetMenu(mdi_hwndMain, frame_menu);
2285 mdi_hwndMain, 0, 0, &client_cs);
2294 ok(mdi_child != 0,
"MDI child creation failed\n");
2297 ok(
GetMenuItemCount(frame_menu) == 4,
"Frame menu should have 4 items after child maximize, but has %u\n",
2303 ok(
GetMenuItemCount(frame_menu) == 4,
"Frame menu should have 4 items after WM_MDISETMENU, but has %u\n",
2308 ok(
GetMenuItemCount(frame_menu) == 0,
"Frame menu should be empty after child restored, but has %u items\n",
2369 cls.
cbSize =
sizeof(cls);
2389 ok(
res == 0,
"wrong big icon %p/0\n",
res );
2391 ok(
res == 0,
"wrong previous big icon %p/0\n",
res );
2393 ok(
res == icon,
"wrong big icon after set %p/%p\n",
res, icon );
2395 ok(
res == icon,
"wrong previous big icon %p/%p\n",
res, icon );
2397 ok(
res == icon2,
"wrong big icon after set %p/%p\n",
res, icon2 );
2400 ok(
res == 0,
"wrong small icon %p/0\n",
res );
2404 ok(
res == 0,
"wrong previous small icon %p/0\n",
res );
2406 ok(
res == icon,
"wrong small icon after set %p/%p\n",
res, icon );
2408 ok(
res == icon ||
broken(!
res),
"wrong small2 icon after set %p/%p\n",
res, icon );
2410 ok(
res == icon,
"wrong previous small icon %p/%p\n",
res, icon );
2412 ok(
res == small_icon,
"wrong small icon after set %p/%p\n",
res, small_icon );
2414 ok(
res == small_icon ||
broken(!
res),
"wrong small2 icon after set %p/%p\n",
res, small_icon );
2418 ok(
res == icon2,
"wrong big icon after set %p/%p\n",
res, icon2 );
2440 HWND hwnd_grandchild, hwnd_child, hwnd_child2;
2513 ok(!!hwnd_desktop,
"Failed to get hwnd_desktop window (%d).\n",
GetLastError());
2515 ok(!!hwnd_child,
"Failed to create child window (%d)\n",
GetLastError());
2517 ok(!!hwnd_child,
"Failed to create child window (%d)\n",
GetLastError());
2519 ok(!!hwnd_child2,
"Failed to create second child window (%d)\n",
GetLastError());
2569 "(%d,%d)-(%d,%d) != %s\n", rc1.
left+1, rc1.
top+2, rc1.
left+4, rc1.
top+6,
2580 "(%d,%d)-(%d,%d) != %s\n", rc1.
left+1, rc1.
top+2, rc1.
left+4, rc1.
top+6,
2613 ok(!!hwnd_child,
"Failed to create child window (%d)\n",
GetLastError());
2631 ok(
SetMenu(
parent, hMenu),
"SetMenu on a top level window should not fail\n");
2638 ok(
ret == hMenu,
"unexpected menu id %p\n",
ret);
2643 ok(!retok ||
broken(retok) ,
"menu handle should be not valid after DestroyMenu\n");
2647 ok(
ret == hMenu,
"unexpected menu id %p\n",
ret);
2648 ok(
SetMenu(
parent, 0),
"SetMenu(0) on a top level window should not fail\n");
2656 ok(
ret == 0,
"unexpected menu id %p\n",
ret);
2661 ok(
ret == 0,
"unexpected menu id %p\n",
ret);
2663 ok(
SetMenu(
parent, hMenu),
"SetMenu on a top level window should not fail\n");
2670 ok(
ret == hMenu,
"unexpected menu id %p\n",
ret);
2672 ok(
SetMenu(
parent, 0),
"SetMenu(0) on a top level window should not fail\n");
2675 ok(
ret == 0,
"unexpected menu id %p\n",
ret);
2678 child =
CreateWindowExA(0,
"static",
NULL,
WS_CHILD, 0, 0, 0, 0,
parent, (
HMENU)10, 0,
NULL);
2689 ok(!
SetMenu(
child, hMenu),
"SetMenu on a child window should fail\n");
2694 ok(!
SetMenu(
child, 0),
"SetMenu(0) on a child window should fail\n");
2701 ok(
SetMenu(
child, hMenu),
"SetMenu on a popup child window should not fail\n");
2702 ok(
SetMenu(
child, 0),
"SetMenu on a popup child window should not fail\n");
2706 ok(!
SetMenu(
child, hMenu),
"SetMenu on an overlapped child window should fail\n");
2721 ok(!
hwnd,
"have to start without children to perform the test\n");
2738 ok(
child[
i] != 0,
"CreateWindowEx failed to create child window\n");
2742 ok(
hwnd != 0,
"GetWindow(GW_CHILD) failed\n");
2762 const int simple_order[5] = { 0, 1, 2, 3, 4 };
2767 const int complex_order_1[1] = { 0 };
2768 const int complex_order_2[2] = { 1, 0 };
2769 const int complex_order_3[3] = { 1, 0, 2 };
2770 const int complex_order_4[4] = { 1, 0, 2, 3 };
2771 const int complex_order_5[5] = { 4, 1, 0, 2, 3 };
2775 const int complex_order_6[3] = { 0, 1, 2 };
2791#define check_z_order(hwnd, next, prev, owner, topmost) \
2792 check_z_order_debug((hwnd), (next), (prev), (owner), (topmost), \
2830 hwnd, topmost ?
"" :
"NOT ");
2835 HWND hwnd_A, hwnd_B, hwnd_C, hwnd_F;
2837 trace(
"hwnd_D %p, hwnd_E %p\n", hwnd_D, hwnd_E);
2848 trace(
"hwnd_F %p\n", hwnd_F);
2860 trace(
"hwnd_C %p\n", hwnd_C);
2870 trace(
"hwnd_B %p\n", hwnd_B);
2881 trace(
"hwnd_A %p\n", hwnd_A);
2889 trace(
"A %p B %p C %p D %p E %p F %p\n", hwnd_A, hwnd_B, hwnd_C, hwnd_D, hwnd_E, hwnd_F);
2917 trace(
"hwnd_C %p\n", hwnd_C);
2933 RECT win_rect, rgn_rect;
2944 trace(
"win9x, mapping to screen coords\n");
2949 ok( win_rect.
left <= rgn_rect.
left,
"rgn left %d not inside win rect %d\n",
2951 ok( win_rect.
top <= rgn_rect.
top,
"rgn top %d not inside win rect %d\n",
2952 rgn_rect.
top, win_rect.
top );
2953 ok( win_rect.
right >= rgn_rect.
right,
"rgn right %d not inside win rect %d\n",
2955 ok( win_rect.
bottom >= rgn_rect.
bottom,
"rgn bottom %d not inside win rect %d\n",
2965 ok(
child != 0,
"couldn't find child window\n");
2990 child =
CreateWindowExA(0,
"static",
NULL,
WS_CHILD, 0, 0, 0, 0,
hwnd, 0, 0,
NULL);
3002 child2 =
CreateWindowExA(0,
"static",
NULL,
WS_CHILD, 0, 0, 0, 0,
child, 0, 0,
NULL);
3058 ok(
ret == 0,
"SetFocus %p should fail\n", child2);
3062 ok(
ret == 0,
"SetFocus %p should fail\n",
child);
3068 ok(
GetFocus() == child2,
"Focus should be on child2 %p\n", child2 );
3096 ok(hwnd2 ==
hwnd,
"SetActiveWindow returned %p instead of %p\n", hwnd2,
hwnd);
3103 ok(hwnd2 == 0,
"SetActiveWindow returned %p instead of 0\n", hwnd2);
3123 hwnd2 =
CreateWindowExA(0,
"static",
NULL,
WS_POPUP|
WS_VISIBLE, 0, 0, 0, 0,
hwnd, 0, 0,
NULL);
3129 hwnd2 =
CreateWindowExA(0,
"static",
NULL,
WS_POPUP|
WS_VISIBLE, 0, 0, 0, 0,
hwnd, 0, 0,
NULL);
3152 p->window =
CreateWindowA(
"static",
NULL,
WS_POPUP |
WS_VISIBLE, 0, 0, 0, 0, 0, 0, 0, 0);
3186 ok(hwnd2 ==
hwnd,
"SetActiveWindow(0) returned %p instead of %p\n", hwnd2,
hwnd);
3195 skip(
"SetForegroundWindow not working\n" );
3202 ok(!
ret,
"SetForegroundWindow returned TRUE instead of FALSE\n");
3205 "got error %d expected ERROR_INVALID_WINDOW_HANDLE\n",
GetLastError());
3215 ok(hwnd2 ==
hwnd,
"Wrong foreground window %p\n", hwnd2);
3219 ok(hwnd2 !=
hwnd,
"Wrong foreground window %p\n", hwnd2);
3226 ok(
ret ||
broken(!
ret),
"SetForegroundWindow returned FALSE instead of TRUE\n");
3232 hwnd2 =
CreateWindowExA(0,
"static",
NULL,
WS_POPUP|
WS_VISIBLE, 0, 0, 0, 0,
hwnd, 0, 0,
NULL);
3238 hwnd2 =
CreateWindowExA(0,
"static",
NULL,
WS_POPUP|
WS_VISIBLE, 0, 0, 0, 0,
hwnd, 0, 0,
NULL);
3247 hwnd2 =
CreateWindowA(
"static",
NULL,
WS_POPUP |
WS_VISIBLE, 0, 0, 0, 0, 0, 0, 0, 0);
3297 ok(!(key_state & 0x8000),
"VK_LBUTTON should not be pressed, state %04x\n", key_state);
3307 hwnd =
CreateWindowExA(0,
"static",
NULL,
WS_POPUP, 0, 0, 10, 10, 0, 0, 0,
NULL);
3319 hwnd =
CreateWindowExA(0,
"static",
NULL,
WS_POPUP, 0, 0, 10, 10, 0, 0, 0,
NULL);
3335 ok(capture == 0,
"SetCapture() = %p\n", capture);
3352 ok(capture == 0,
"GetCapture() = %p\n", capture);
3354 button =
CreateWindowExA(0,
"button",
NULL,
WS_POPUP |
WS_VISIBLE, 0, 0, 10, 10, 0, 0, 0,
NULL);
3363 ok(capture == 0,
"SetCapture() = %p\n", capture);
3380 button =
CreateWindowExA(0,
"button",
NULL,
WS_POPUP |
WS_VISIBLE, 0, 0, 10, 10, 0, 0, 0,
NULL);
3387 ok(capture == 0,
"SetCapture() = %p\n", capture);
3397 hwnd =
CreateWindowExA(0,
"static",
NULL,
WS_POPUP, 0, 0, 10, 10, 0, 0, 0,
NULL);
3409 hwnd =
CreateWindowExA(0,
"static",
NULL,
WS_POPUP, 0, 0, 10, 10, 0, 0, 0,
NULL);
3420 ok(capture ==
button,
"SetCapture() = %p\n", capture);
3451 ok (
ret,
"releasecapture did not return TRUE.\n");
3453 ok (
ret,
"releasecapture did not return TRUE after second try.\n");
3459 HWND cap_wnd, cap_wnd2, set_cap_wnd;
3466 if (pGetGUIThreadInfo)
3471 ok(
status,
"GetGUIThreadInfo() failed!\n");
3476 ok(cap_wnd == (
HWND)
lParam,
"capture window %p does not match lparam %lx\n", cap_wnd,
lParam);
3477 todo_wine ok(cap_wnd ==
hWnd,
"capture window %p does not match hwnd %p\n", cap_wnd,
hWnd);
3481 ok(!set_cap_wnd ||
broken(set_cap_wnd == cap_wnd),
3482 "SetCapture should have failed!\n");
3491 ok(!set_cap_wnd,
"SetCapture should have failed!\n");
3495 ok(!
status,
"ReleaseCapture should have failed!\n");
3498 if (pGetGUIThreadInfo)
3503 ok(
status,
"GetGUIThreadInfo() failed!\n");
3509 ok(cap_wnd2 == cap_wnd,
"Capture changed!\n");
3531 if (!pGetGUIThreadInfo)
3533 win_skip(
"GetGUIThreadInfo is not available\n");
3547 ok( aclass,
"RegisterClassA failed with error %d\n",
GetLastError());
3556 ok(
ret,
"AppendMenuA has failed!\n");
3563 win_skip(
"TrackPopupMenu test crashes on Win9x/WinMe\n");
3569 ok(
ret == 0,
"TrackPopupMenu returned %d expected zero\n",
ret);
3607 ok(
ret,
"no message available\n");
3610 ok( !
ret,
"message %04x available\n",
msg.message);
3616 ok(
ret,
"no message available\n");
3619 ok( !
ret,
"message %04x available\n",
msg.message);
3626 skip(
"keybd_event didn't work, skipping keyboard test\n" );
3631 ok( !
ret,
"message %04x available\n",
msg.message);
3640 ok(
ret,
"no message available\n");
3643 ok( !
ret,
"message %04x available\n",
msg.message);
3649 ok(
ret,
"no message available\n");
3652 ok( !
ret,
"message %04x available\n",
msg.message);
3658 ok(
ret,
"no message available\n");
3661 ok( !
ret,
"message %04x available\n",
msg.message);
3678 if (!
ret)
msg->message = 0;
3712 trace(
"setting cursor to (%d,%d)\n",
x,
y);
3716 if (
x !=
pt.x ||
y !=
pt.y)
3718 skip(
"failed to set mouse position, skipping mouse input tests\n" );
3732 ok(
msg.pt.x ==
x &&
msg.pt.y ==
y,
"wrong message coords (%d,%d)/(%d,%d)\n",
3750 "hwnd %p message %04x\n",
msg.hwnd,
msg.message);
3754 ok( !
ret,
"message %04x available\n",
msg.message);
3766 ok( !
ret,
"message %04x available\n",
msg.message);
3786 skip(
"simulating mouse click doesn't work, skipping mouse button tests\n" );
3792 ok(
ret,
"no message available\n");
3796 msg.hwnd, popup,
msg.message);
3799 ok(
ret,
"no message available\n");
3801 msg.hwnd, popup,
msg.message);
3804 ok(
ret,
"no message available\n");
3806 msg.hwnd, popup,
msg.message);
3809 ok(
ret,
"no message available\n");
3811 msg.hwnd, popup,
msg.message);
3814 ok(!
ret,
"message %04x available\n",
msg.message);
3825 ok(
ret,
"no message available\n");
3829 ok(
ret,
"no message available\n");
3838 ok(
ret,
"no message available\n");
3840 msg.hwnd, popup,
msg.message);
3843 msg.hwnd, popup,
msg.message);
3847#define TEST_MOUSEACTIVATE(A,B) \
3848 res = SendMessageA(hwnd, WM_MOUSEACTIVATE, (WPARAM)hwnd, (LPARAM)MAKELRESULT(A,0)); \
3849 ok(res == B, "WM_MOUSEACTIVATE for %s returned %ld\n", #A, res);
3889 child =
CreateWindowExA(0,
"static",
NULL,
WS_CHILD|
WS_VISIBLE, 10, 10, 10, 10,
hwnd, 0, 0,
NULL);
3897 ok(
ret == 1,
"Expected GetUpdateRect to return non-zero, got %d\n",
ret);
3899 "Update rectangle is empty!\n");
3902 ok( !
ret,
"Expected GetUpdateRect to return zero, got %d\n",
ret);
3903 ok(
rc2.left == 0 &&
rc2.top == 0 &&
rc2.right == 0 &&
rc2.bottom == 0,
3913 ok( !
ret,
"Expected GetUpdateRect to return zero, got %d\n",
ret);
3914 ok(
rc2.left == 0 &&
rc2.top == 0 &&
rc2.right == 0 &&
rc2.bottom == 0,
3944 ok( rc1.
bottom - rc1.
top == sbheight,
"Height should be %d size is %s\n", sbheight,
3953 ok( rc1.
right - rc1.
left == sbwidth - 1 ,
"Width should be %d size is %s\n", sbwidth - 1,
3974 HWND ret,
parent, child1, child2, child3, child4, sibling, popup;
3978 100, 100, 200, 200, 0, 0, 0,
NULL);
3984 0, 0, 50, 50, child1, 0, 0,
NULL);
3987 0, 0, 50, 50, child2, 0, 0,
NULL);
3990 0, 0, 50, 50, child3, 0, 0,
NULL);
3993 trace(
"parent %p, child1 %p, child2 %p, child3 %p, child4 %p\n",
3994 parent, child1, child2, child3, child4);
4003 ok(!
IsChild(desktop, child1),
"wrong parent/child %p/%p\n", desktop, child1);
4004 ok(!
IsChild(desktop, child2),
"wrong parent/child %p/%p\n", desktop, child2);
4005 ok(!
IsChild(desktop, child3),
"wrong parent/child %p/%p\n", desktop, child3);
4006 ok(!
IsChild(desktop, child4),
"wrong parent/child %p/%p\n", desktop, child4);
4009 ok(!
IsChild(desktop, child2),
"wrong parent/child %p/%p\n", desktop, child2);
4011 ok(!
IsChild(child1, child2),
"wrong parent/child %p/%p\n", child1, child2);
4013 ok(
IsChild(child2, child3),
"wrong parent/child %p/%p\n", child2, child3);
4015 ok(!
IsChild(child3, child4),
"wrong parent/child %p/%p\n", child3, child4);
4016 ok(!
IsChild(desktop, child4),
"wrong parent/child %p/%p\n", desktop, child4);
4021 ok(!
SetParent(child2, child3),
"SetParent should fail\n");
4028 ok(
ret != 0,
"SetParent should not fail\n");
4030 ok(!
ret,
"SetParent should fail\n");
4032 ok(
ret != 0,
"SetParent should not fail\n");
4042 ok(
ret != 0,
"SetParent should not fail\n");
4044 ok(!
ret,
"SetParent should fail\n");
4046 ok(!
ret,
"SetParent should fail\n");
4055 skip(
"Win9x/WinMe crash\n");
4059 100, 100, 200, 200, 0, hMenu, 0,
NULL);
4063 ok(
GetMenu(sibling) == hMenu,
"SetParent should not remove menu\n");
4066 ok(
SetParent(child4, child3) != 0,
"SetParent should not fail\n");
4067 ok(
SetParent(child3, child2) != 0,
"SetParent should not fail\n");
4068 ok(
SetParent(child2, child1) != 0,
"SetParent should not fail\n");
4069 ok(!
IsChild(child3, child4),
"wrong parent/child %p/%p\n", child3, child4);
4071 ok(
IsChild(child3, child4),
"wrong parent/child %p/%p\n", child3, child4);
4072 ok(
IsChild(child2, child4),
"wrong parent/child %p/%p\n", child2, child4);
4073 ok(!
IsChild(child1, child4),
"wrong parent/child %p/%p\n", child1, child4);
4075 ok(
IsChild(child1, child4),
"wrong parent/child %p/%p\n", child1, child4);
4081 ok(!
IsWindow(sibling),
"sibling still exists\n");
4082 ok(!
IsWindow(child1),
"child1 still exists\n");
4083 ok(!
IsWindow(child2),
"child2 still exists\n");
4084 ok(!
IsWindow(child3),
"child3 still exists\n");
4085 ok(!
IsWindow(child4),
"child4 still exists\n");
4088 100, 100, 200, 200, 0, 0, 0,
NULL);
4094 0, 0, 50, 50, 0, 0, 0,
NULL);
4097 trace(
"parent %p, child %p, popup %p\n",
parent, child1, popup);
4108 ok(
ret == desktop,
"expected %p, got %p\n", desktop,
ret);
4136 ok(bret,
"SetForegroundWindow() failed\n");
4147 ok(!
IsWindow(child1),
"child1 still exists\n");
4148 ok(!
IsWindow(popup),
"popup still exists\n");
4172 "Ex style (0x%08x) should match what the caller passed to CreateWindowEx (0x%08x)\n",
4176 "Style (0x%08x) should match what the caller passed to CreateWindowEx (0x%08x)\n",
4208 DWORD dwActualStyle;
4209 DWORD dwActualExStyle;
4214 ss.styleNew = dwStyleIn;
4215 ss.styleOld = dwExStyleIn;
4231 ok(dwActualStyle == dwStyleOut,
"expected style %#x, got %#x\n", dwStyleOut, dwActualStyle);
4232 ok(dwActualExStyle == dwExStyleOut,
"expected ex_style %#x, got %#x\n", dwExStyleOut, dwActualExStyle);
4244 dwExStyleOut = dwExStyleIn & ~WS_EX_WINDOWEDGE;
4245 ok(dwActualStyle == dwStyleOut,
"expected style %#x, got %#x\n", dwStyleOut, dwActualStyle);
4246 ok(dwActualExStyle == dwExStyleOut,
"expected ex_style %#x, got %#x\n", dwExStyleOut, dwActualExStyle);
4260 dwExStyleOut = dwExStyleIn & ~WS_EX_WINDOWEDGE;
4261 ok(dwActualStyle == dwStyleOut,
"expected style %#x, got %#x\n", dwStyleOut, dwActualStyle);
4264 ok(dwActualExStyle == dwExStyleOut,
"expected ex_style %#x, got %#x\n", dwExStyleOut, dwActualExStyle);
4309 if (pGetLayeredWindowAttributes)
4363 ok(
ret,
"DefDlgProc(DM_SETDEFID) failed\n");
4393 BOOL parent_is_child;
4400 ok(
ret,
"DefDlgProc(DM_SETDEFID) failed\n");
4409 if (parent_is_child)
4412 disabled_hwnd =
param->grand_parent;
4417 disabled_hwnd =
param->parent;
4420 if (
param->grand_parent)
4422 if (parent_is_child)
4433 if (
param->grand_parent)
4439 if (
param->grand_parent)
4453 param->dlg_data->style &= ~DS_CONTROL;
4494 ok(
parent != 0,
"parent creation failed, style %#x\n", style_in);
4509 ok(
hwnd != 0,
"dialog creation failed, style %#x, exstyle %#x\n", style_in, ex_style_in);
4514 ok(
ret,
"DefDlgProc(DM_SETDEFID) failed\n");
4523 ok(ex_style == ex_style_out,
"expected ex_style %#x, got %#x\n", ex_style_out, ex_style);
4538 ex_style_out = ex_style_in & ~WS_EX_WINDOWEDGE;
4539 ok(ex_style == ex_style_out,
"expected ex_style %#x, got %#x\n", ex_style_out, ex_style);
4547 ok(
style == style_out,
"expected style %#x, got %#x\n", style_out,
style);
4554 ex_style_out = ex_style_in & ~WS_EX_WINDOWEDGE;
4557 ok(ex_style == ex_style_out,
"expected ex_style %#x, got %#x\n", ex_style_out, ex_style);
4652 if (pGetLayeredWindowAttributes)
4759 dlg_data.dt.cdit = 0;
4762 dlg_data.dt.cx = 100;
4763 dlg_data.dt.cy = 100;
4764 dlg_data.menu_name = 0;
4765 dlg_data.class_id = 0;
4766 dlg_data.class_atom = 0;
4767 dlg_data.caption[0] = 0;
4769 parent =
CreateWindowExA(0,
"static",
NULL,
WS_OVERLAPPEDWINDOW, 0, 0, 0, 0,
NULL,
NULL,
NULL,
NULL);
4771 child =
CreateWindowExA(0,
"static",
NULL,
WS_OVERLAPPEDWINDOW, 0, 0, 0, 0,
NULL,
NULL,
NULL,
NULL);
4774 child2 =
CreateWindowExA(0,
"static",
NULL,
WS_CHILD, 0, 0, 0, 0,
child,
NULL,
NULL,
NULL);
4776 trace(
"parent %p child %p child2 %p desktop %p\n",
parent,
child, child2, desktop);
4783 ok(
dialog != 0,
"dialog creation failed\n");
4799 ok(
ret == 2,
"DialogBoxIndirectParam returned %ld\n",
ret);
4805 ok(
dialog != 0,
"dialog creation failed\n");
4814 param.ga_parent = desktop;
4820 ok(
ret == 2,
"DialogBoxIndirectParam returned %ld\n",
ret);
4822 other =
CreateWindowExA(0,
"static",
NULL,
WS_OVERLAPPEDWINDOW, 0, 0, 0, 0,
NULL,
NULL,
NULL,
NULL);
4829 ok(
dialog != 0,
"dialog creation failed\n");
4838 param.ga_parent = desktop;
4844 ok(
ret == 2,
"DialogBoxIndirectParam returned %ld\n",
ret);
4852 ok(
ret == 2,
"DialogBoxIndirectParam returned %ld\n",
ret);
4864 ok(
ret == 1,
"DialogBoxIndirectParam returned %ld\n",
ret);
4874 ok(
ret == 1,
"DialogBoxIndirectParam returned %ld\n",
ret);
4881 ok(
ret == 1,
"DialogBoxIndirectParam returned %ld\n",
ret);
4915 ok ( colr == 0,
"pixel should be black, color is %08x\n", colr);
4935 ok ( colr == 0,
"pixel should be black, color is %08x\n", colr);
4945 HRGN exprgn, tmprgn, clipping;
4946 RECT rc, rcu, cliprc;
5026 SetRect( &cliprc, 0,0, 100,100);
5030 ok(
EqualRgn( exprgn,
hrgn),
"wrong update region in excessive scroll\n");
5037 50, 50, 100, 100, hwnd1, 0, 0,
NULL);
5104 100, 100, 200, 200, 0, 0, 0,
NULL);
5109 win_skip(
"GetScrollRange doesn't work\n" );
5113 ok(
min == 0,
"minimum scroll pos is %d (should be zero)\n",
min);
5114 ok(
max == 0,
"maximum scroll pos is %d (should be zero)\n",
min);
5117 si.
nPage = 0xdeadbeef;
5119 ok( !
ret,
"GetScrollInfo returns %d (should be zero)\n",
ret);
5120 ok( si.
nPage == 0xdeadbeef,
"unexpected value for nPage is %d\n", si.
nPage);
5123 ok(
ret,
"GetScrollRange returns FALSE\n");
5124 ok(
min == 0,
"minimum scroll pos is %d (should be zero)\n",
min);
5125 ok(
max == 0,
"maximum scroll pos is %d (should be zero)\n",
min);
5128 si.
nPage = 0xdeadbeef;
5130 ok( !
ret,
"GetScrollInfo returns %d (should be zero)\n",
ret);
5131 ok( si.
nPage == 0xdeadbeef,
"unexpected value for nPage is %d\n", si.
nPage);
5139 HRGN exprgn, tmprgn,
hrgn;
5165 ok ( colr == 0,
"pixel should be black, color is %08x\n", colr);
5169 ok ( colr == 0,
"pixel should be black, color is %08x\n", colr);
5214 if (pGetMonitorInfoA)
5223 win_skip(
"Test would crash on Win95\n");
5233 "CreateWindow with invalid menu handle should fail\n");
5251 trace(
"Failed to create window class=%s, style=0x%08x, exStyle=0x%08x\n",
class,
style, exStyle);
5268 class.cbClsExtra = 0;
5269 class.cbWndExtra = 0;
5270 class.hInstance = 0;
5273 class.hbrBackground = 0;
5274 class.lpszMenuName = 0;
5278 ok(
FALSE,
"RegisterClass failed\n");
5285 ok(
hmenu != 0,
"Failed to create menu\n");
5294 static const DWORD styles[] = {
5298 static const DWORD exStyles[] = {
5329 for (
j = 0;
j < (1 <<
COUNTOF(exStyles));
j++)
5331 for (
k = exstyle = 0;
k <
COUNTOF(exStyles);
k++)
if (
j & (1 <<
k)) exstyle |= exStyles[
k];
5343#define SHOWSYSMETRIC(SM) trace(#SM "=%d\n", GetSystemMetrics(SM))
5457 trace(
"WM_PAINT: hwnd %p, client rect %s, window rect %s\n",
hwnd,
5485#define parentdc_field_ok(t, w, r, f, got) \
5486 ok (t.w.r.f==got.w.r.f, "window " #w ", rect " #r ", field " #f \
5487 ": expected %d, got %d\n", \
5490#define parentdc_todo_field_ok(t, w, r, f, got) \
5491 todo_wine_if (t.w##_todo.r.f) \
5492 parentdc_field_ok(t, w, r, f, got);
5494#define parentdc_rect_ok(t, w, r, got) \
5495 parentdc_todo_field_ok(t, w, r, left, got); \
5496 parentdc_todo_field_ok(t, w, r, top, got); \
5497 parentdc_todo_field_ok(t, w, r, right, got); \
5498 parentdc_todo_field_ok(t, w, r, bottom, got);
5500#define parentdc_win_ok(t, w, got) \
5501 parentdc_rect_ok(t, w, client, got); \
5502 parentdc_rect_ok(t, w, clip, got); \
5503 parentdc_rect_ok(t, w, paint, got);
5505#define parentdc_ok(t, got) \
5506 parentdc_win_ok(t, main, got); \
5507 parentdc_win_ok(t, child1, got); \
5508 parentdc_win_ok(t, child2, got);
5518#define nothing_todo {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}
5521 {{0, 0, 150, 150}, {0, 0, 150, 150}, {0, 0, 150, 150}},
nothing_todo,
5522 {{0, 0, 40, 40}, {-20, -20, 130, 130}, {0, 0, 40, 40}}, {{0, 0, 0, 0}, {1, 1, 1, 1}, {0, 0, 0, 0}},
5523 {{0, 0, 40, 40}, {-40, -40, 110, 110}, {0, 0, 40, 40}}, {{0, 0, 0, 0}, {1, 1, 1, 1}, {0, 0, 0, 0}},
5528 {{0, 0, 150, 150}, {0, 0, 50, 50}, {0, 0, 50, 50}},
nothing_todo,
5529 {{0, 0, 40, 40}, {-20, -20, 30, 30}, {0, 0, 30, 30}}, {{0, 0, 0, 0}, {1, 1, 0, 0}, {0, 0, 0, 0}},
5530 {{0, 0, 40, 40}, {-40, -40, 10, 10}, {0, 0, 10, 10}}, {{0, 0, 0, 0}, {1, 1, 0, 0}, {0, 0, 0, 0}},
5535 {{0, 0, 150, 150}, {0, 0, 10, 10}, {0, 0, 10, 10}},
nothing_todo,
5536 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}},
nothing_todo,
5537 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}},
nothing_todo,
5542 {{0, 0, 150, 150}, {40, 40, 50, 50}, {40, 40, 50, 50}},
nothing_todo,
5543 {{0, 0, 40, 40}, {20, 20, 30, 30}, {20, 20, 30, 30}},
nothing_todo,
5544 {{0, 0, 40, 40}, {0, 0, 10, 10}, {0, 0, 10, 10}},
nothing_todo,
5549 {{0, 0, 150, 150}, {20, 20, 60, 60}, {20, 20, 60, 60}},
nothing_todo,
5550 {{0, 0, 40, 40}, {-20, -20, 130, 130}, {0, 0, 40, 40}}, {{0, 0, 0, 0}, {1, 1, 1, 1}, {0, 0, 0, 0}},
5551 {{0, 0, 40, 40}, {-20, -20, 20, 20}, {0, 0, 20, 20}}, {{0, 0, 0, 0}, {1, 1, 0, 0}, {0, 0, 0, 0}},
5556 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}},
nothing_todo,
5557 {{0, 0, 40, 40}, {0, 0, 10, 10}, {0, 0, 10, 10}},
nothing_todo,
5558 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}},
nothing_todo,
5563 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}},
nothing_todo,
5564 {{0, 0, 40, 40}, {-20, -20, 130, 130}, {0, 0, 40, 40}}, {{0, 0, 0, 0}, {1, 1, 1, 1}, {0, 0, 0, 0}},
5565 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}},
nothing_todo,
5676 static const char ansi_class_nameA[] =
"ansi class name";
5677 static const WCHAR ansi_class_nameW[] = {
'a',
'n',
's',
'i',
' ',
'c',
'l',
'a',
's',
's',
' ',
'n',
'a',
'm',
'e',0};
5678 static const char unicode_class_nameA[] =
"unicode class name";
5679 static const WCHAR unicode_class_nameW[] = {
'u',
'n',
'i',
'c',
'o',
'd',
'e',
' ',
'c',
'l',
'a',
's',
's',
' ',
'n',
'a',
'm',
'e',0};
5688 classW.lpszClassName = unicode_class_nameW;
5691 memset(&classA, 0,
sizeof(classA));
5862 ok(
EqualRect( &
rect,
r ),
"passed rect %s doesn't match window rect %s\n",
5880#define expect_menu(window, menu) \
5881 SetLastError(0xdeadbeef); \
5882 res = (GetMenu(window) == (HMENU)menu); \
5883 ok(res, "GetMenu error %d\n", GetLastError())
5885#define expect_style(window, style)\
5886 ok((ULONG)GetWindowLongA(window, GWL_STYLE) == (style), "expected style %x != %x\n", (LONG)(style), GetWindowLongA(window, GWL_STYLE))
5888#define expect_ex_style(window, ex_style)\
5889 ok((ULONG)GetWindowLongA(window, GWL_EXSTYLE) == (ex_style), "expected ex_style %x != %x\n", (LONG)(ex_style), GetWindowLongA(window, GWL_EXSTYLE))
5891#define expect_gle_broken_9x(gle)\
5892 ok(GetLastError() == gle ||\
5893 broken(GetLastError() == 0xdeadbeef),\
5894 "IsMenu set error %d\n", GetLastError())
6101 0, 0, 100, 100, 0, 0, 0,
NULL);
6107 memset(&minmax, 0,
sizeof(minmax));
6112 ok(
IsRectEmpty(&rc_minmax),
"ptMaxTrackSize is not empty\n");
6131 memset(&minmax, 0,
sizeof(minmax));
6148 hwnd =
CreateWindowExA(0,
"Sizes_WndClass",
NULL,
WS_CHILD, 300000, 300000, 200000, 200000,
parent, 0, 0,
NULL);
6152 "invalid rect right %u\n", rc.
right );
6154 "invalid rect bottom %u\n", rc.
bottom );
6160 hwnd =
CreateWindowExA(0,
"Sizes_WndClass",
NULL,
WS_CHILD, -20, -20, -10, -10,
parent, 0, 0,
NULL);
6163 ok( rc.
right == 0,
"invalid rect right %u\n", rc.
right );
6170 hwnd =
CreateWindowExA(0,
"Sizes_WndClass",
NULL,
WS_CHILD, -300000, -300000, -200000, -200000,
parent, 0, 0,
NULL);
6173 ok( rc.
right == 0,
"invalid rect right %u\n", rc.
right );
6179 parent =
CreateWindowExA(0,
"MinMax_WndClass",
NULL,
WS_POPUP, 0, 0, 100, 100, 0, 0, 0,
NULL);
6186 hwnd =
CreateWindowExA(0,
"Sizes_WndClass",
NULL,
WS_CHILD, 10, 10, 100, 0x7fffffff,
parent, 0, 0,
NULL);
6189 ok( rc.
right == 100,
"invalid rect right %u\n", rc.
right );
6191 "invalid rect bottom %u\n", rc.
bottom );
6198 hwnd =
CreateWindowExA(0,
"Sizes_WndClass",
NULL,
WS_CHILD, 20, 10, 0x7fffffff, 0x7fffffff,
parent, 0, 0,
NULL);
6202 "invalid rect right %u\n", rc.
right );
6204 "invalid rect bottom %u\n", rc.
bottom );
6210 hwnd =
CreateWindowExA(0,
"Sizes_WndClass",
NULL,
WS_OVERLAPPEDWINDOW, 300000, 300000, 200000, 200000, 0, 0, 0,
NULL);
6217 if (pGetLayout && pSetLayout)
6221 if (pGetLayout(
hdc ))
6227 0, 0, 100, 100, 0, 0, 0,
NULL);
6230 hwnd =
CreateWindowExA(0,
"static",
NULL,
WS_CHILD, 0, 0, 20, 20,
parent, 0, 0,
NULL);
6234 hwnd =
CreateWindowExA(0,
"static",
NULL,
WS_POPUP, 0, 0, 20, 20,
parent, 0, 0,
NULL);
6239 hwnd =
CreateWindowExA(0,
"static",
NULL,
WS_CHILD, 0, 0, 20, 20,
parent, 0, 0,
NULL);
6244 if (pGetProcessDefaultLayout && pSetProcessDefaultLayout)
6249 ok( !pGetProcessDefaultLayout(
NULL ),
"GetProcessDefaultLayout succeeded\n" );
6252 res = pGetProcessDefaultLayout( &
layout );
6254 ok(
layout == 0,
"GetProcessDefaultLayout wrong layout %x\n",
layout );
6256 res = pSetProcessDefaultLayout( 7 );
6258 res = pGetProcessDefaultLayout( &
layout );
6260 ok(
layout == 7,
"GetProcessDefaultLayout wrong layout %x\n",
layout );
6264 res = pGetProcessDefaultLayout( &
layout );
6268 0, 0, 100, 100, 0, 0, 0,
NULL);
6277 pSetProcessDefaultLayout( 0 );
6279 else win_skip(
"SetProcessDefaultLayout not supported\n" );
6281 else win_skip(
"SetLayout not supported\n" );
6283 else win_skip(
"SetLayout not available\n" );
6290#undef expect_gle_broken_9x
6293#undef expect_ex_style
6300 static int sets_last_error = -1;
6301 if (sets_last_error == -1)
6302 sets_last_error = (actual != 0xdeadbeef);
6303 return (!sets_last_error && (actual == 0xdeadbeef)) || (actual ==
expected);
6313 ok(!
retval,
"SetWindowLongPtr on invalid window handle should have returned 0 instead of 0x%lx\n",
retval);
6315 "SetWindowLongPtr should have set error to ERROR_INVALID_WINDOW_HANDLE instead of %d\n",
GetLastError());
6319 ok(!
retval,
"SetWindowLongPtr on invalid index should have returned 0 instead of 0x%lx\n",
retval);
6321 "SetWindowLongPtr should have set error to ERROR_INVALID_INDEX instead of %d\n",
GetLastError());
6326 "SetWindowLongPtr on invalid window proc should have returned address of main_window_procA instead of 0x%lx\n",
retval);
6327 ok(
GetLastError() == 0xdeadbeef,
"SetWindowLongPtr shouldn't have set the last error, instead of setting it to %d\n",
GetLastError());
6330 "SetWindowLongPtr on invalid window proc shouldn't have changed the value returned by GetWindowLongPtr, instead of changing it to 0x%lx\n",
retval);
6338 ok(
GetLastError() == 0xdeadbeef,
"SetWindowLongPtr shouldn't have set the last error, instead of setting it to %d\n",
GetLastError());
6341 "SetWindowLongPtr on invalid window proc shouldn't have changed the value returned by GetWindowLongPtr, instead of changing it to 0x%lx\n",
retval);
6374 LONG expected_style, new_style, old_style;
6382 LONG creation_style;
6405 memset(&cls, 0,
sizeof(cls));
6413 expected_style =
tests[
i].style;
6420 expected_stylestruct[1].
styleNew = expected_style;
6423 tests[
i].creation_style, 100, 100, 200, 200, 0, 0, 0,
NULL);
6424 ok(
hwnd != 0,
"CreateWindow failed\n");
6428 ok(old_style ==
tests[
i].creation_style,
"expected old style %#x, got %#x\n",
6429 tests[
i].creation_style, old_style);
6431 ok(new_style == expected_style,
"expected new style %#x, got %#x\n",
6432 expected_style, new_style);
6445 RECT rcMain, rc, rcMinimized;
6448 SetRect(&rcMain, 120, 120, 210, 210);
6468 ok(!
ret,
"not expected ret: %lu\n",
ret);
6479 ok(
ret,
"not expected ret: %lu\n",
ret);
6486 ok(!
EqualRect(&rcMain, &rcMinimized),
"rects shouldn't match\n");
6489 (rcMinimized.
right - rcMinimized.
left) * 2,
6490 (rcMinimized.
bottom - rcMinimized.
top) * 2,
6492 ok(
ret,
"not expected ret: %lu\n",
ret);
6494 ok(
EqualRect(&rc, &rcMinimized),
"rects should match\n");
6497 ok(
ret,
"not expected ret: %lu\n",
ret);
6508 ok(!
ret,
"not expected ret: %lu\n",
ret);
6513 ok(!
ret,
"not expected ret: %lu\n",
ret);
6524 ok(!
ret,
"not expected ret: %lu\n",
ret);
6535 ok(
ret,
"not expected ret: %lu\n",
ret);
6542 ok(!
EqualRect(&rcMain, &rc),
"rects shouldn't match\n");
6545 ok(!
ret,
"not expected ret: %lu\n",
ret);
6552 ok(!
EqualRect(&rcMain, &rc),
"rects shouldn't match\n");
6555 ok(
ret,
"not expected ret: %lu\n",
ret);
6566 ok(!
ret,
"not expected ret: %lu\n",
ret);
6570 ok(
ret,
"not expected ret: %lu\n",
ret);
6573 ok(!
ret,
"not expected ret: %lu\n",
ret);
6587 ok( buf_len != 0,
"expected a nonempty window text\n" );
6588 ok( !
strcmp(
buf,
"another_caption"),
"got wrong window text '%s'\n",
buf );
6602 ok(
success,
"SetWindowTextA failed\n" );
6620 hwnd =
CreateWindowExA( 0,
"MainWindowClass",
"caption",
WS_POPUP, 0, 0, 0, 0, 0, 0, 0,
NULL );
6627 ok( buf_len != 0,
"expected a nonempty window text\n" );
6628 ok( !
strcmp(
buf,
"caption"),
"got wrong window text '%s'\n",
buf );
6634 ok( buf_len == 0,
"expected a nonempty window text\n" );
6635 ok( *
buf == 0,
"got wrong window text '%s'\n",
buf );
6639 ok( buf_len == 0,
"expected a nonempty window text\n" );
6644 ok( buf_len == 0,
"expected a nonempty window text\n" );
6645 ok( bufW[0] == 0xcc,
"got %x\n", bufW[0] );
6653 ok( buf_len == 0,
"got %d\n", buf_len );
6661 ok( buf_len == 0,
"got %d\n", buf_len );
6668 hwnd2 =
CreateWindowExW( 0,
mainclassW,
NULL,
WS_POPUP, 0, 0, 0, 0, 0, 0, 0,
NULL );
6674 memset( bufW, 0xcc,
sizeof(bufW) );
6677 ok( buf_len == 0,
"got %d\n", buf_len );
6678 ok( *bufW == 0,
"got %x\n", *bufW );
6682 memset( bufW, 0xcc,
sizeof(bufW) );
6685 ok( buf_len == 0,
"got %d\n", buf_len );
6686 ok( *bufW == 0xcccc,
"got %x\n", *bufW );
6697 ok(
r != 0,
"expected a nonempty window text\n" );
6698 ok( !
strcmp(
buf,
"caption"),
"got wrong window text '%s'\n",
buf );
6704 ok(
success,
"SetWindowTextA failed\n" );
6710 ok( buf_len != 0,
"expected a nonempty window text\n" );
6711 ok( !
strcmp(
buf,
"new_caption"),
"got wrong window text '%s'\n",
buf );
6717 ok(
r != 0,
"WM_SETTEXT failed\n" );
6723 ok( buf_len != 0,
"expected a nonempty window text\n" );
6724 ok( !
strcmp(
buf,
"another_caption"),
"got wrong window text '%s'\n",
buf );
6741 ok( num_msgs >= 1,
"got %u wakeups from MsgWaitForMultipleObjects\n", num_msgs );
6754 ok( num_msgs >= 1,
"got %u wakeups from MsgWaitForMultipleObjects\n", num_msgs );
6759 ok( buf_len != 0,
"expected a nonempty window text\n" );
6760 ok( !
strcmp(
buf,
"thread_caption"),
"got wrong window text '%s'\n",
buf );
6767 ok(
r == 0,
"settext should return zero\n");
6770 ok(
r == 0,
"settext should return zero (%ld)\n",
r);
6773 ok(
r == 0,
"settext should return zero (%ld)\n",
r);
6776 ok(
r == 0,
"settext should return zero (%ld)\n",
r);
6786 BOOL ret, parent_wm_paint, grandparent_wm_paint;
6788 HWND hgrandparent, hparent, hchild;
6790 static const char classNameA[] =
"GetUpdateRectClass";
6796 0, 0, 100, 100, hgrandparent,
NULL, 0,
NULL);
6799 10, 10, 30, 30, hparent,
NULL, 0,
NULL);
6808 ok(!
ret,
"GetUpdateRect returned not empty region\n");
6814 ok(
ret,
"GetUpdateRect returned empty region\n");
6818 parent_wm_paint =
FALSE;
6819 grandparent_wm_paint =
FALSE;
6824 if (
msg.hwnd == hgrandparent) grandparent_wm_paint =
TRUE;
6825 if (
msg.hwnd == hparent) parent_wm_paint =
TRUE;
6829 ok(parent_wm_paint,
"WM_PAINT should have been received in parent\n");
6830 ok(!grandparent_wm_paint,
"WM_PAINT should NOT have been received in grandparent\n");
6854 0, 0, 100, 100, hgrandparent,
NULL, 0,
NULL);
6857 10, 10, 30, 30, hparent,
NULL, 0,
NULL);
6864 ok(!
ret,
"GetUpdateRect returned not empty region\n");
6870 ok(!
ret,
"GetUpdateRect returned not empty region\n");
6876 ok(
ret,
"GetUpdateRect returned empty region\n");
6880 parent_wm_paint =
FALSE;
6881 grandparent_wm_paint =
FALSE;
6886 if (
msg.hwnd == hgrandparent) grandparent_wm_paint =
TRUE;
6887 if (
msg.hwnd == hparent) parent_wm_paint =
TRUE;
6891 ok(parent_wm_paint,
"WM_PAINT should have been received in parent\n");
6892 ok(!grandparent_wm_paint,
"WM_PAINT should NOT have been received in grandparent\n");
6906 const int waitTime = 2000;
6923 ok(
IsRectEmpty(&updateRect),
"Exposed rect should be empty\n");
6951 static UINT ncredrawflags;
6986 if (loopcount >= 100)
break;
6992 ok(loopcount < 100,
"Detected infinite WM_PAINT loop (%x).\n",
flags);
7024 if (!pGetWindowModuleFileNameA)
7026 win_skip(
"GetWindowModuleFileNameA is not available\n");
7030 hwnd =
CreateWindowExA(0,
"static",
NULL,
WS_POPUP, 0,0,0,0, 0, 0, 0,
NULL);
7043 ret2 = pGetWindowModuleFileNameA(
hwnd, buf2,
sizeof(buf2));
7045 "GetWindowModuleFileNameA error %u\n",
GetLastError());
7049 ok(ret1 == ret2 ||
broken(ret2 == ret1 + 1),
"%u != %u\n", ret1, ret2);
7050 ok(!
strcmp(buf1, buf2),
"%s != %s\n", buf1, buf2);
7056 ok(ret2 == ret1 - 2 ||
broken(ret2 == ret1 - 3),
7057 "expected %u, got %u\n", ret1 - 2, ret2);
7060 "expected 0xdeadbeef or ERROR_INSUFFICIENT_BUFFER, got %u\n",
GetLastError());
7064 ok(!ret2,
"GetModuleFileName should return 0\n");
7067 "expected 0xdeadbeef or ERROR_INSUFFICIENT_BUFFER, got %u\n",
GetLastError());
7070 ret2 = pGetWindowModuleFileNameA(
hwnd, buf2, ret1 - 2);
7071 ok(ret2 == ret1 - 2 ||
broken(ret2 == ret1 - 3) ||
broken(!ret2),
7072 "expected %u, got %u\n", ret1 - 2, ret2);
7075 "expected 0xdeadbeef or ERROR_INSUFFICIENT_BUFFER, got %u\n",
GetLastError());
7078 ret2 = pGetWindowModuleFileNameA(
hwnd, buf2, 0);
7079 ok(!ret2,
"expected 0, got %u\n", ret2);
7082 "expected 0xdeadbeef or ERROR_INSUFFICIENT_BUFFER, got %u\n",
GetLastError());
7089 ret1 = pGetWindowModuleFileNameA(
hwnd, buf1,
sizeof(buf1));
7090 ok(!ret1,
"expected 0, got %u\n", ret1);
7092 "expected ERROR_INVALID_WINDOW_HANDLE, got %u\n",
GetLastError());
7097 ret1 = pGetWindowModuleFileNameA(
hwnd, buf1,
sizeof(buf1));
7098 ok(!ret1 ||
broken(ret1),
"expected 0, got %u\n", ret1);
7106 ret2 = pGetWindowModuleFileNameA(
hwnd, buf2,
sizeof(buf2));
7110 "expected 0 or %u, got %u %s\n", ret1, ret2, buf2);
7116 static const WCHAR mainwindowclassW[] = {
'M',
'a',
'i',
'n',
'W',
'i',
'n',
'd',
'o',
'w',
'C',
'l',
'a',
's',
's',0};
7117 static const WCHAR message_windowW[] = {
'm',
'e',
's',
's',
'a',
'g',
'e',
' ',
'w',
'i',
'n',
'd',
'o',
'w',0};
7129 win_skip(
"CreateWindowExW with parent HWND_MESSAGE failed\n");
7133 ok( !
GetParent(
hwnd),
"GetParent should return 0 for message only windows\n" );
7140 ok(
parent != 0,
"GetAncestor(GA_PARENT) should not return 0 for message windows\n");
7141 ok(
parent != desktop,
"GetAncestor(GA_PARENT) should not return desktop for message windows\n");
7143 ok(
root ==
hwnd,
"GetAncestor(GA_ROOT) should return hwnd for message windows\n");
7145 "parent shouldn't have parent %p\n", pGetAncestor(
parent,
GA_PARENT) );
7160 ok( found ==
hwnd,
"didn't find message window %p/%p\n", found,
hwnd );
7163 ok( found == 0,
"found message window %p/%p\n", found,
hwnd );
7168 ok( found ==
hwnd,
"didn't find message window %p/%p\n", found,
hwnd );
7190 SIZE sz = { 200, 200 };
7195 if (!pGetLayeredWindowAttributes || !pSetLayeredWindowAttributes || !pUpdateLayeredWindow)
7197 win_skip(
"layered windows not supported\n" );
7206 100, 100, 200, 200, 0, 0, 0,
NULL);
7210 ok( !
ret,
"UpdateLayeredWindow should fail on non-layered window\n" );
7213 ok( !
ret,
"GetLayeredWindowAttributes should fail on non-layered window\n" );
7214 ret = pSetLayeredWindowAttributes(
hwnd, 0, 0, LWA_ALPHA );
7215 ok( !
ret,
"SetLayeredWindowAttributes should fail on non-layered window\n" );
7218 ok( !
ret,
"GetLayeredWindowAttributes should fail on layered but not initialized window\n" );
7220 ok(
ret,
"UpdateLayeredWindow should succeed on layered window\n" );
7222 ok( !
ret,
"GetLayeredWindowAttributes should fail on layered but not initialized window\n" );
7223 ret = pSetLayeredWindowAttributes(
hwnd, 0x123456, 44, LWA_ALPHA );
7224 ok(
ret,
"SetLayeredWindowAttributes should succeed on layered window\n" );
7226 ok(
ret,
"GetLayeredWindowAttributes should succeed on layered window\n" );
7227 ok(
key == 0x123456 ||
key == 0,
"wrong color key %x\n",
key );
7232 ok( !
ret,
"UpdateLayeredWindow should fail on layered but initialized window\n" );
7239 ok( !
ret,
"UpdateLayeredWindow should fail on non-layered window\n" );
7241 ok( !
ret,
"GetLayeredWindowAttributes should fail on no longer layered window\n" );
7244 ok( !
ret,
"GetLayeredWindowAttributes should fail on layered but not initialized window\n" );
7246 ok(
ret,
"UpdateLayeredWindow should succeed on layered window\n" );
7248 ok( !
ret,
"UpdateLayeredWindow should fail with ex flag\n" );
7250 if (pUpdateLayeredWindowIndirect)
7252 UPDATELAYEREDWINDOWINFO
info;
7263 ret = pUpdateLayeredWindowIndirect(
hwnd, &
info );
7264 ok(
ret,
"UpdateLayeredWindowIndirect should succeed on layered window\n" );
7267 ret = pUpdateLayeredWindowIndirect(
hwnd, &
info );
7268 ok( !
ret,
"UpdateLayeredWindowIndirect should fail\n" );
7273 ret = pUpdateLayeredWindowIndirect(
hwnd, &
info );
7274 ok(
ret,
"UpdateLayeredWindowIndirect should succeed on layered window\n" );
7277 ret = pUpdateLayeredWindowIndirect(
hwnd, &
info );
7278 ok( !
ret,
"UpdateLayeredWindowIndirect should fail\n" );
7282 ret = pUpdateLayeredWindowIndirect(
hwnd, &
info );
7283 ok( !
ret,
"UpdateLayeredWindowIndirect should fail\n" );
7286 ok( !
ret,
"UpdateLayeredWindowIndirect should fail\n" );
7290 ret = pSetLayeredWindowAttributes(
hwnd, 0x654321, 22, LWA_COLORKEY | LWA_ALPHA );
7291 ok(
ret,
"SetLayeredWindowAttributes should succeed on layered window\n" );
7293 ok(
ret,
"GetLayeredWindowAttributes should succeed on layered window\n" );
7294 ok(
key == 0x654321,
"wrong color key %x\n",
key );
7296 ok(
flags == (LWA_COLORKEY | LWA_ALPHA),
"wrong flags %x\n",
flags );
7299 ok( !
ret,
"UpdateLayeredWindow should fail on layered but initialized window\n" );
7302 ret = pSetLayeredWindowAttributes(
hwnd, 0x888888, 33, LWA_COLORKEY );
7303 ok(
ret,
"SetLayeredWindowAttributes should succeed on layered window\n" );
7306 ok(
ret,
"GetLayeredWindowAttributes should succeed on layered window\n" );
7307 ok(
key == 0x888888,
"wrong color key %x\n",
key );
7310 ok(
flags == LWA_COLORKEY,
"wrong flags %x\n",
flags );
7313 ret = pSetLayeredWindowAttributes(
hwnd, 0x999999, 44, 0 );
7314 ok(
ret,
"SetLayeredWindowAttributes should succeed on layered window\n" );
7317 ok(
ret,
"GetLayeredWindowAttributes should succeed on layered window\n" );
7318 ok(
key == 0x888888 ||
key == 0x999999,
"wrong color key %x\n",
key );
7325 ret = pSetLayeredWindowAttributes(
hwnd, 0x222222, 55, 0 );
7326 ok(
ret,
"SetLayeredWindowAttributes should succeed on layered window\n" );
7328 ok(
ret,
"GetLayeredWindowAttributes should succeed on layered window\n" );
7329 ok(
key == 0 ||
key == 0x222222,
"wrong color key %x\n",
key );
7368 static const DWORD t_style[] = {
7371 static const DWORD t_ex_style[] = {
7382 if (!pGetMonitorInfoA || !pMonitorFromPoint)
7384 win_skip(
"GetMonitorInfoA or MonitorFromPoint are not available on this platform\n");
7390 hmon = pMonitorFromPoint(
pt, MONITOR_DEFAULTTOPRIMARY);
7411 for (
i = 0;
i <
sizeof(t_style)/
sizeof(t_style[0]);
i++)
7418 for (
j = 0;
j <
sizeof(t_ex_style)/
sizeof(t_ex_style[0]);
j++)
7423 ex_style = t_ex_style[
j];
7428 ok(
hwnd != 0,
"%d: CreateWindowExA(%#x/%#x) failed\n",
i, ex_style,
style);
7440 ok(
hwnd != 0,
"%d: CreateWindowExA(%#x/%#x) failed\n",
i, ex_style,
style);
7452 ok(
hwnd != 0,
"%d: CreateWindowExA(%#x/%#x) failed\n",
i, ex_style,
style);
7464 ok(
hwnd != 0,
"%d: CreateWindowExA(%#x/%#x) failed\n",
i, ex_style,
style);
7476 ok(
hwnd != 0,
"%d: CreateWindowExA(%#x/%#x) failed\n",
i, ex_style,
style);
7492 ok(
hwnd != 0,
"%d: CreateWindowExA(%#x/%#x) failed\n",
i, ex_style,
style);
7521 int expectedMinTrackX;
7522 int expectedMinTrackY;
7523 int actualMinTrackX;
7524 int actualMinTrackY;
7525 int expectedMaxTrackX;
7526 int expectedMaxTrackY;
7527 int actualMaxTrackX;
7528 int actualMaxTrackY;
7529 int expectedMaxSizeX;
7530 int expectedMaxSizeY;
7552 adjustedStyle &= ~WS_BORDER;
7563 expectedMinTrackX = -2 *
rect.left;
7564 expectedMinTrackY = -2 *
rect.top;
7569 ok(actualMinTrackX == expectedMinTrackX && actualMinTrackY == expectedMinTrackY,
7570 "expected minTrack %dx%d, actual minTrack %dx%d for %s\n",
7571 expectedMinTrackX, expectedMinTrackY, actualMinTrackX, actualMinTrackY,
7578 ok(actualMaxTrackX == expectedMaxTrackX && actualMaxTrackY == expectedMaxTrackY,
7579 "expected maxTrack %dx%d, actual maxTrack %dx%d for %s\n",
7580 expectedMaxTrackX, expectedMaxTrackY, actualMaxTrackX, actualMaxTrackY,
7583 expectedMaxSizeX =
rect.right -
rect.left;
7584 expectedMaxSizeY =
rect.bottom -
rect.top;
7588 ok(actualMaxSizeX == expectedMaxSizeX && actualMaxSizeY == expectedMaxSizeY,
7589 "expected maxSize %dx%d, actual maxSize %dx%d for %s\n",
7590 expectedMaxSizeX, expectedMaxSizeY, actualMaxSizeX, actualMaxSizeY,
7594 expectedPosX =
rect.left;
7595 expectedPosY =
rect.top;
7598 ok(actualPosX == expectedPosX && actualPosY == expectedPosY,
7599 "expected maxPosition (%d/%d), actual maxPosition (%d/%d) for %s\n",
7609#define NUMBER_OF_THICK_CHILD_TESTS 16
7614 RECT adjustedParentRect;
7619 LONG expectedHeight;
7621 static const char className[] =
"THICK_CHILD_CLASS";
7662 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME",
7663 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME | WS_DLGFRAME",
7664 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME | WS_DLGFRAME | WS_BORDER",
7665 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME | WS_BORDER",
7666 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME, exstyle= WS_EX_DLGMODALFRAME",
7667 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME | WS_DLGFRAME exstyle= WS_EX_DLGMODALFRAME",
7668 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME | WS_DLGFRAME | WS_BORDER exstyle= WS_EX_DLGMODALFRAME",
7669 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME | WS_BORDER exstyle= WS_EX_DLGMODALFRAME",
7670 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME exstyle= WS_EX_STATICEDGE",
7671 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME | WS_DLGFRAME exstyle= WS_EX_STATICEDGE",
7672 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME | WS_DLGFRAME | WS_BORDER exstyle= WS_EX_STATICEDGE",
7673 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME | WS_BORDER exstyle= WS_EX_STATICEDGE",
7674 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME, exstyle= WS_EX_STATICEDGE | WS_EX_DLGMODALFRAME",
7675 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME | WS_DLGFRAME exstyle= WS_EX_STATICEDGE | WS_EX_DLGMODALFRAME",
7676 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME | WS_DLGFRAME | WS_BORDER exstyle= WS_EX_STATICEDGE | WS_EX_DLGMODALFRAME",
7677 "style=WS_CHILD | WS_VISIBLE | WS_THICKFRAME | WS_BORDER exstyle= WS_EX_STATICEDGE | WS_EX_DLGMODALFRAME",
7702 childWindow =
CreateWindowExA( exStyles[
i], className,
"", styles[
i], 0, 0, 0, 0, parentWindow, 0,
GetModuleHandleA(0),
NULL );
7703 ok(childWindow !=
NULL,
"Failed to create child window, error: %u\n",
GetLastError());
7710 childWidth = childRect.
right - childRect.
left;
7711 childHeight = childRect.
bottom - childRect.
top;
7713 adjustedStyle = styles[
i];
7715 adjustedStyle &= ~WS_BORDER;
7727 expectedWidth = -2 * adjustedParentRect.
left;
7728 expectedHeight = -2 * adjustedParentRect.
top;
7731 ok((childWidth == expectedWidth) && (childHeight == expectedHeight),
7732 "size of window (%s) is wrong: expected size %dx%d != actual size %dx%d\n",
7769 ok( !
ret,
"GetWindowRect succeeded for %p\n",
hwnd );
7775 ok( !
ret,
"GetWindowRect succeeded for %p\n",
hwnd );
7787 if (!pGetWindowRgnBox)
7789 win_skip(
"GetWindowRgnBox not supported\n");
7793 hwnd =
CreateWindowExA(0,
"static",
NULL,
WS_VISIBLE, 10, 10, 10, 10,
NULL, 0, 0,
NULL);
7801 ok(
hrgn !=
NULL,
"Region creation failed\n");
7814 ok(
r.left == 2 &&
r.top == 3 &&
r.right == 10 &&
r.bottom == 15,
7827 ok(
r.left ==
width - 10 &&
r.top == 3 &&
r.right ==
width - 2 &&
r.bottom == 15,
7830 else win_skip(
"MirrorRgn not supported\n" );
7841 if (!pSetProcessDefaultLayout)
7843 win_skip(
"SetProcessDefaultLayout not supported\n" );
7847 parent =
CreateWindowExA(
WS_EX_LAYOUTRTL,
"static",
NULL,
WS_POPUP, 100, 100, 300, 300,
NULL, 0, 0,
NULL);
7848 child =
CreateWindowExA(0,
"static",
NULL,
WS_CHILD, 10, 10, 20, 20,
parent, 0, 0,
NULL);
7868 ok(
pt.x == 22 &&
pt.y == 22,
"wrong point %d,%d\n",
pt.x,
pt.y );
7899 win_skip(
"FlashWindow not supported\n" );
7904 0, 0, 0, 0, 0, 0, 0,
NULL );
7926 if (!pFlashWindowEx)
7928 win_skip(
"FlashWindowEx not supported\n" );
7933 0, 0, 0, 0, 0, 0, 0,
NULL );
7936 finfo.cbSize =
sizeof(FLASHWINFO);
7937 finfo.dwFlags = FLASHW_TIMER;
7939 finfo.dwTimeout = 200;
7942 ret = pFlashWindowEx(&finfo);
7953 ret = pFlashWindowEx(&finfo);
7954 todo_wine ok(!
ret,
"previous window state should not be active\n");
7956 finfo.cbSize =
sizeof(FLASHWINFO) - 1;
7958 ret = pFlashWindowEx(&finfo);
7960 "FlashWindowEx succeeded\n");
7962 finfo.cbSize =
sizeof(FLASHWINFO) + 1;
7964 ret = pFlashWindowEx(&finfo);
7966 "FlashWindowEx succeeded\n");
7967 finfo.cbSize =
sizeof(FLASHWINFO);
7972 ret = pFlashWindowEx(&finfo);
7976 ok(finfo.cbSize ==
sizeof(FLASHWINFO),
"FlashWindowEx modified cdSize to %x\n", finfo.cbSize);
7977 ok(finfo.hwnd ==
hwnd,
"FlashWindowEx modified hwnd to %p\n", finfo.hwnd);
7978 ok(finfo.dwFlags == FLASHW_TIMER,
"FlashWindowEx modified dwFlags to %x\n", finfo.dwFlags);
7979 ok(finfo.uCount == 3,
"FlashWindowEx modified uCount to %x\n", finfo.uCount);
7980 ok(finfo.dwTimeout == 200,
"FlashWindowEx modified dwTimeout to %x\n", finfo.dwTimeout);
7983 0, 0, 0, 0, 0, 0, 0,
NULL );
7993 prev = pFlashWindowEx(&finfo);
7995 ok(finfo.cbSize ==
sizeof(FLASHWINFO),
"FlashWindowEx modified cdSize to %x\n", finfo.cbSize);
7996 ok(finfo.hwnd ==
hwnd,
"FlashWindowEx modified hwnd to %p\n", finfo.hwnd);
7997 ok(finfo.dwFlags == FLASHW_TIMER,
"FlashWindowEx modified dwFlags to %x\n", finfo.dwFlags);
7998 ok(finfo.uCount == 3,
"FlashWindowEx modified uCount to %x\n", finfo.uCount);
7999 ok(finfo.dwTimeout == 200,
"FlashWindowEx modified dwTimeout to %x\n", finfo.dwTimeout);
8001 finfo.dwFlags = FLASHW_STOP;
8003 ret = pFlashWindowEx(&finfo);
8004 ok(prev !=
ret,
"previous window state should be different\n");
8013 hwnd =
CreateWindowExA( 0,
"MainWindowClass",
"caption",
WS_POPUP, 0,0,0,0, 0, 0, 0,
NULL );
8018 ok( found ==
NULL,
"expected a NULL hwnd\n" );
8023 ok( found ==
hwnd,
"found is %p, expected a valid hwnd\n", found );
8027 found =
FindWindowExA( 0, 0,
"MainWindowClass",
"caption" );
8028 ok( found ==
hwnd,
"found is %p, expected a valid hwnd\n", found );
8033 hwnd =
CreateWindowExA( 0,
"MainWindowClass",
NULL,
WS_POPUP, 0,0,0,0, 0, 0, 0,
NULL );
8038 ok( found ==
hwnd,
"found is %p, expected a valid hwnd\n", found );
8043 ok( found ==
hwnd,
"found is %p, expected a valid hwnd\n", found );
8050 ok( found !=
NULL,
"found is NULL, expected a valid hwnd\n" );
8052 ok( found !=
NULL,
"found is NULL, expected a valid hwnd\n" );
8057 HWND hwndOwner, hwndPopup1, hwndPopup2;
8212 static const int real_child_pos[] = { 14,15,16,17,18,19,20,21,24,25,26,27,42,43,
8213 44,45,46,47,48,49,52,53,54,55,51,50,23,22,-1 };
8214 static const int real_child_pos_nt4[] = { 14,15,16,17,20,21,24,25,26,27,42,43,44,45,
8215 48,49,52,53,54,55,51,50,47,46,23,22,19,18,-1 };
8219 int found_invisible, found_disabled, found_groupbox, found_httransparent, found_extransparent;
8223 ok(
ret,
"GetClassInfo(Button) failed\n");
8226 ok(
ret,
"RegisterClass(my_button) failed\n");
8231 ok(
ret,
"RegisterClass(my_httrasparent) failed\n");
8236 ok(
ret,
"RegisterClass(my_window) failed\n");
8242 ok(
parent != 0,
"CreateWindowEx failed\n");
8247 found_invisible = 0;
8250 found_httransparent = 0;
8251 found_extransparent = 0;
8254 for (
i = 0;
i <
sizeof(real_child_pos)/
sizeof(real_child_pos[0]);
i++)
8260 ok(
hwnd != 0,
"RealChildWindowFromPoint failed\n");
8264 ok(
ret == real_child_pos[
i] ||
broken(
ret == real_child_pos_nt4[
i]),
"expected %d, got %d\n", real_child_pos[
i],
ret);
8273 if (
ret != real_child_pos[
i] &&
ret != -1)
8275 trace(
"found hwnd %p (%s), is_visible %d, is_enabled %d, is_groupbox %d, is_httransparent %d, is_extransparent %d\n",
8278 trace(
"expected hwnd %p (%s), is_visible %d, is_enabled %d, is_groupbox %d, is_httransparent %d, is_extransparent %d\n",
8291 ok(!found_invisible,
"found %d invisible windows\n", found_invisible);
8292 ok(found_disabled,
"found %d disabled windows\n", found_disabled);
8294 ok(found_groupbox == 4,
"found %d groupbox windows\n", found_groupbox);
8295 ok(found_httransparent,
"found %d httransparent windows\n", found_httransparent);
8297 ok(found_extransparent,
"found %d extransparent windows\n", found_extransparent);
8300 ok(
ret,
"UnregisterClass(my_button) failed\n");
8302 ok(
ret,
"UnregisterClass(my_httrasparent) failed\n");
8304 ok(
ret,
"UnregisterClass(my_window) failed\n");
8323 ok(events_no == 2,
"SendInput returned %d\n", events_no);
8333 ok(0,
"unexpected call\n");
8350 ok(end_event != 0,
"OpenEvent failed\n");
8354 ok(child_static != 0,
"CreateWindowEx failed\n");
8361 ok(child_button != 0,
"CreateWindowEx failed\n");
8364 ok(
win == child_button,
"WindowFromPoint returned %p, expected %p\n",
win, child_button);
8370 ok(
win != 0,
"CreateWindowEx failed\n");
8380 ok(
msg.hwnd ==
win,
"msg.hwnd = %p, expected %p\n",
msg.hwnd,
win);
8385 ok(
got_hittest,
"transparent window didn't get WM_NCHITTEST message\n");
8386 ok(got_click,
"button under static window didn't get WM_LBUTTONUP\n");
8405 100, 100, 200, 100, 0, 0,
NULL,
NULL);
8406 ok(
hwnd != 0,
"CreateWindowEx failed\n");
8414 skip(
"there's another window covering test window\n");
8421 ok(
child != 0,
"CreateWindowEx failed\n");
8429 ok(
child != 0,
"CreateWindowEx failed\n");
8472 HWND wnd, wnd0, dwnd;
8482 wnd =
CreateWindowA(
"static",
"test1",
WS_POPUP,
pos.x,
pos.y,
width,
height,
NULL,
NULL,
NULL,
NULL);
8483 ok(wnd !=
NULL,
"Failed %p\n", wnd);
8484 wnd0 =
CreateWindowA(
"static",
"test2",
WS_POPUP, 0, 0,
width,
height,
NULL,
NULL,
NULL,
NULL);
8485 ok(wnd0 !=
NULL,
"Failed %p\n", wnd);
8486 dwnd =
CreateWindowA(
"static",
"test3", 0, 200, 300, 150, 150,
NULL,
NULL,
NULL,
NULL);
8488 ok(dwnd !=
NULL,
"Failed %p\n", dwnd);
8492 ok(window_rect.
left ==
pos.x,
"left is %d instead of %d\n", window_rect.
left,
pos.x);
8493 ok(window_rect.
top ==
pos.y,
"top is %d instead of %d\n", window_rect.
top,
pos.y);
8497 ok(client_rect.
left == 0,
"left is %d instead of 0\n", client_rect.
left);
8498 ok(client_rect.
top == 0,
"top is %d instead of 0\n", client_rect.
top);
8509 ok(
n == 0,
"Got %d, expected %d\n",
n, 0);
8510 ok(
err == 0xdeadbeef,
"Got %x, expected %x\n",
err, 0xdeadbeef);
8515 ok(
n == 0,
"Got %d, expected %d\n",
n, 0);
8516 ok(
err == 0xdeadbeef,
"Got %x, expected %x\n",
err, 0xdeadbeef);
8530 ok(
n == 0,
"Got %d, expected %d\n",
n, 0);
8531 ok(
p.x == 100 &&
p.y == 100,
"Failed got(%d, %d), expected (%d, %d)\n",
p.x,
p.y, 100, 100);
8538 ok(
n == 0,
"Got %d, expected %d\n",
n, 0);
8539 ok(
p.x == 100 &&
p.y == 100,
"Failed got(%d, %d), expected (%d, %d)\n",
p.x,
p.y, 100, 100);
8546 ok(
n == 0,
"Got %d, expected %d\n",
n, 0);
8547 ok(
p.x == 100 &&
p.y == 100,
"Failed got(%d, %d), expected (%d, %d)\n",
p.x,
p.y, 100, 100);
8554 ok(
n == 0,
"Got %d, expected %d\n",
n, 0);
8555 ok(
p.x == 100 &&
p.y == 100,
"Failed got(%d, %d), expected (%d, %d)\n",
p.x,
p.y, 100, 100);
8562 ok(
n == 0,
"Got %d, expected %d\n",
n, 0);
8563 ok(
p.x == 100 &&
p.y == 100,
"Failed got(%d, %d), expected (%d, %d)\n",
p.x,
p.y, 100, 100);
8570 ok(
n == 0,
"Got %d, expected %d\n",
n, 0);
8571 ok(
p.x == 100 &&
p.y == 100,
"Failed got(%d, %d), expected (%d, %d)\n",
p.x,
p.y, 100, 100);
8572 ok(
err == 0xdeadbeef,
"Got %x, expected %x\n",
err, 0xdeadbeef);
8578 ok(
n == 0,
"Got %d, expected %d\n",
n, 0);
8579 ok(
p.x == 100 &&
p.y == 100,
"Failed got(%d, %d), expected (%d, %d)\n",
p.x,
p.y, 100, 100);
8580 ok(
err == 0xdeadbeef,
"Got %x, expected %x\n",
err, 0xdeadbeef);
8586 ok((
p.x == (window_rect.
left + 100)) && (
p.y == (window_rect.
top + 100)),
"Failed got (%d, %d), expected (%d, %d)\n",
8587 p.x,
p.y, window_rect.
left + 100, window_rect.
top + 100);
8593 ok((
p.x == (-window_rect.
left + 100)) && (
p.y == (-window_rect.
top + 100)),
"Failed got (%d, %d), expected (%d, %d)\n",
8594 p.x,
p.y, -window_rect.
left + 100, -window_rect.
top + 100);
8600 ok(
n == 0,
"Got %x, expected 0\n",
n);
8601 ok((
p.x == 0) && (
p.y == 0),
"Failed got (%d, %d), expected (0, 0)\n",
p.x,
p.y);
8602 ok(
err == 0xdeadbeef,
"Got %x, expected %x\n",
err, 0xdeadbeef);
8608 ok(
n == 0,
"Got %x, expected 0\n",
n);
8609 ok((
p.x == 0) && (
p.y == 0),
"Failed got (%d, %d), expected (0, 0)\n",
p.x,
p.y);
8610 ok(
err == 0xdeadbeef,
"Got %x, expected %x\n",
err, 0xdeadbeef);
8619 ok(!
ret,
"Should fail\n");
8626 ok(!
ret,
"Should fail\n");
8627 ok(
p.x == 100 &&
p.y == 100,
"Failed got(%d, %d), expected (%d, %d)\n",
p.x,
p.y, 100, 100);
8634 ok(!
ret,
"Should fail\n");
8635 ok(
p.x == 100 &&
p.y == 100,
"Failed got(%d, %d), expected (%d, %d)\n",
p.x,
p.y, 100, 100);
8641 ok((
p.x == (window_rect.
left + 100)) && (
p.y == (window_rect.
top + 100)),
"Failed got (%d, %d), expected (%d, %d)\n",
8642 p.x,
p.y, window_rect.
left + 100, window_rect.
top + 100);
8647 ok((
p.x == 0) && (
p.y == 0),
"Failed got (%d, %d), expected (0, 0)\n",
p.x,
p.y);
8656 ok(!
ret,
"Should fail\n");
8663 ok(!
ret,
"Should fail\n");
8664 ok(
p.x == 100 &&
p.y == 100,
"Failed got(%d, %d), expected (%d, %d)\n",
p.x,
p.y, 100, 100);
8671 ok(!
ret,
"Should fail\n");
8672 ok(
p.x == 100 &&
p.y == 100,
"Failed got(%d, %d), expected (%d, %d)\n",
p.x,
p.y, 100, 100);
8678 ok((
p.x == (-window_rect.
left + 100)) && (
p.y == (-window_rect.
top + 100)),
"Failed got(%d, %d), expected (%d, %d)\n",
8679 p.x,
p.y, -window_rect.
left + 100, -window_rect.
top + 100);
8684 ok((
p.x == 0) && (
p.y == 0),
"Failed got (%d, %d), expected (0, 0)\n",
p.x,
p.y);
8694 const RECT rc = {15, 15, 40, 40};
8695 const POINT wnd_orig = {30, 20};
8696 const POINT child_orig = {10, 5};
8706 child_orig.
x, child_orig.
y, 100, 50,
8717 "has invalid area after ValidateRgn(NULL)\n");
8720 ok(
EqualRgn(rgn1, rgn2),
"assigned and retrieved update regions are different\n");
8722 "has invalid area after ValidateRgn(NULL)\n");
8738 ok(
EqualRgn(rgn1, rgn2),
"wrong update region\n");
8743 ok(
EqualRgn(rgn1, rgn2),
"wrong update region\n");
8750 ok(
EqualRgn(rgn1, rgn2),
"wrong update region\n");
8766 "can't remove WS_CHILD style\n");
8824 ok(
res == 0x449b0190,
"unexpected result %lx\n",
res);
8852 100, 100, 200, 200, 0, 0, 0,
NULL);
8853 ok(
data->thread_hwnd != 0,
"Failed to create overlapped window\n");
8904 ok(
ret,
"RegisterClassA failed\n");
8907 ok(
data.thread_started !=
NULL,
"CreateEventA failed\n");
8910 ok(
data.thread_got_wm_app !=
NULL,
"CreateEventA failed\n");
8913 ok(
data.main_in_wm_app_1 !=
NULL,
"CreateEventA failed\n");
8916 ok(
data.thread_replied !=
NULL,
"CreateEventA failed\n");
8919 100, 100, 200, 200, 0, 0, 0,
NULL);
8927 ok(
res == 0x240408ea,
"unexpected result %lx\n",
res);
8948 100, 100, 100, 100, 0, 0, 0,
NULL);
8949 ok(
button != 0,
"CreateWindowExA failed\n");
9007#define SET_FOREGROUND_STEAL_1 0x01
9008#define SET_FOREGROUND_SET_1 0x02
9009#define SET_FOREGROUND_STEAL_2 0x04
9010#define SET_FOREGROUND_SET_2 0x08
9011#define SET_FOREGROUND_INJECT 0x10
9026 0, 0, 10, 10, 0, 0, 0,
NULL);
9031 if (
msg.message ==
p->msg_quit)
9034 if (
msg.message ==
p->msg_command)
9082 300, 0, 10, 10, 0, 0, 0,
NULL);
9105 ok(!
app_activated,
"Received WM_ACTIVATEAPP(1), did not expect it.\n");
9112 ok(!
app_activated,
"Received WM_ACTIVATEAPP(1), did not expect it.\n");
9124 ok(!
app_activated,
"Received WM_ACTIVATEAPP(!= 0), did not expect it.\n");
9131 ok(
app_activated,
"Expected WM_ACTIVATEAPP(1), did not receive it.\n");
9142 ok(!
app_activated,
"Received WM_ACTIVATEAPP(1), did not expect it.\n");
9149 ok(!
app_activated,
"Received WM_ACTIVATEAPP(1), did not expect it.\n");
9161 ok(!
app_activated,
"Received WM_ACTIVATEAPP(1), did not expect it.\n");
9168 ok(!
app_activated,
"Received WM_ACTIVATEAPP(1), did not expect it.\n");
9181 ok(!
app_activated,
"Received WM_ACTIVATEAPP(1), did not expect it.\n");
9191 ok(
app_activated,
"Expected WM_ACTIVATEAPP(1), did not receive it.\n");
9208 ok(!
app_activated,
"Received WM_ACTIVATEAPP(1), did not expect it.\n");
9215 ok(!
app_activated,
"Received WM_ACTIVATEAPP(1), did not expect it.\n");
9263 static const WCHAR winproc_testW[] = {
'w',
'i',
'n',
'p',
'r',
'o',
'c',
'_',
't',
'e',
's',
't',0};
9273 memset(&wnd_classA, 0,
sizeof(wnd_classA));
9282 "winproc pointers should not be identical\n");
9286 ok(
count == 1,
"winproc should be called once (%d)\n",
count);
9289 ok(
count == 1,
"winproc should be called once (%d)\n",
count);
9295 if (
sizeof(
void*) == 4)
9321 hwnd =
CreateWindowExA(0,
"static",
"test",
WS_POPUP, 0, 0, 0, 0, 0, 0, 0, 0);
9322 ok(
hwnd != 0,
"CreateWindowEx failed\n");
9325 "SetWindowLongPtr failed\n");
9327 ok(winproc_handle !=
winproc,
"winproc pointers should not be identical\n");
9330 for(
i = 2;
i<0xffff;
i++)
9336 ok(
i != 0xffff,
"unable to run out of winproc slots\n");
9350 "winproc_convW returned error\n");
9352 "winproc_convW returned error\n");
9356 ok(
i == 1,
"winproc should be called once (%d)\n",
i);
9359 ok(
i == 1,
"winproc should be called once (%d)\n",
i);
9365 ok(
i == 1,
"winproc should be called once (%d)\n",
i);
9368 ok(
i == 1,
"winproc should be called once (%d)\n",
i);
9377 ok(hdwp !=
NULL,
"got %p\n", hdwp);
9412 pGetWindowInfo = (
void *)
GetProcAddress( user32,
"GetWindowInfo" );
9413 pGetWindowModuleFileNameA = (
void *)
GetProcAddress( user32,
"GetWindowModuleFileNameA" );
9414 pGetLayeredWindowAttributes = (
void *)
GetProcAddress( user32,
"GetLayeredWindowAttributes" );
9415 pSetLayeredWindowAttributes = (
void *)
GetProcAddress( user32,
"SetLayeredWindowAttributes" );
9416 pUpdateLayeredWindow = (
void *)
GetProcAddress( user32,
"UpdateLayeredWindow" );
9417 pUpdateLayeredWindowIndirect = (
void *)
GetProcAddress( user32,
"UpdateLayeredWindowIndirect" );
9418 pGetMonitorInfoA = (
void *)
GetProcAddress( user32,
"GetMonitorInfoA" );
9419 pMonitorFromPoint = (
void *)
GetProcAddress( user32,
"MonitorFromPoint" );
9420 pGetWindowRgnBox = (
void *)
GetProcAddress( user32,
"GetWindowRgnBox" );
9421 pGetGUIThreadInfo = (
void *)
GetProcAddress( user32,
"GetGUIThreadInfo" );
9422 pGetProcessDefaultLayout = (
void *)
GetProcAddress( user32,
"GetProcessDefaultLayout" );
9423 pSetProcessDefaultLayout = (
void *)
GetProcAddress( user32,
"SetProcessDefaultLayout" );
9425 pFlashWindowEx = (
void *)
GetProcAddress( user32,
"FlashWindowEx" );
9465 if (!
hhook)
win_skip(
"Cannot set CBT hook, skipping some tests\n" );
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
static void startup(void)
static const char * wine_dbgstr_rect(const RECT *prc)
#define UlongToHandle(ul)
DWORD GetPixel(LPDIRECTDRAWSURFACE7 Surface, UINT x, UINT y)
#define ERROR_INSUFFICIENT_BUFFER
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define GetProcAddress(x, y)
#define ERROR_ACCESS_DENIED
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
BOOL WINAPI TerminateProcess(IN HANDLE hProcess, IN UINT uExitCode)
HANDLE WINAPI OpenProcess(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwProcessId)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
DWORD WINAPI GetTickCount(VOID)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
static void test_window(IHTMLDocument2 *doc)
GLint GLint GLsizei GLsizei GLsizei GLint border
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLclampf GLclampf GLclampf alpha
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei height
GLdouble GLdouble GLdouble r
GLint GLint GLsizei width
GLenum const GLfloat * params
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLdouble GLdouble GLint GLint order
GLenum GLenum GLenum input
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
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
static const WCHAR titleW[]
_Check_return_ _CRTIMP int __cdecl sscanf(_In_z_ const char *_Src, _In_z_ _Scanf_format_string_ const char *_Format,...)
_In_ BOOL _In_ HANDLE hProcess
static struct test_info tests[]
#define sprintf(buf, format,...)
static HANDLE start_event
static IHTMLWindow2 * window
#define todo_wine_if(is_todo)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
static void test_SetFocus(void)
static void test_SetForegroundWindow(void)
static void test_SetActiveWindow(void)
static void test_activateapp(HWND window1)
static INT_PTR WINAPI reparent_dlg_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static void test_GetUpdateRect(void)
static BOOL test_thick_child_got_minmax
static void test_MDI_child_stack(HWND mdi_client)
static void test_dialog_parent(void)
static LRESULT WINAPI check_style_wnd_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
static void nccalchelper(HWND hwnd, INT x, INT y, RECT *prc)
static LRESULT WINAPI destroy_dialog_owner_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
#define SET_FOREGROUND_SET_1
static ATOM atomStyleCheckClass
static void FixedAdjustWindowRectEx(RECT *rc, LONG style, BOOL menu, LONG exstyle)
static int window_to_index(HWND hwnd, HWND *window, int size)
static void window_from_point_proc(HWND parent)
static void test_smresult(void)
static void test_FindWindowEx(void)
static void create_window_tree(HWND parent, HWND *window, int size)
static void check_z_order_debug(HWND hwnd, HWND next, HWND prev, HWND owner, BOOL topmost, const char *file, int line)
static DWORD CALLBACK gettext_msg_thread(LPVOID arg)
static DWORD WINAPI smresult_thread_proc(void *param)
static void test_capture_1(void)
static DWORD CALLBACK settext_msg_thread(LPVOID arg)
static void test_AdjustWindowRect(void)
static void check_dialog_style(DWORD style_in, DWORD ex_style_in, DWORD style_out, DWORD ex_style_out)
static void test_nonclient_area(HWND hwnd)
static void test_window_without_child_style(void)
static LRESULT CALLBACK minmax_wnd_proc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
#define TEST_MOUSEACTIVATE(A, B)
static void test_gettext(void)
static BOOL mdi_RegisterWindowClasses(void)
static const WCHAR mainclassW[]
static void test_layered_window(void)
static LRESULT CALLBACK fullscreen_wnd_proc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
static INT_PTR WINAPI empty_dlg_proc2(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static void get_window_attributes(HWND hwnd, struct window_attributes *attrs)
static LRESULT WINAPI main_window_procW(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static BOOL wait_for_event(HANDLE event, int timeout)
static void test_validatergn(HWND hwnd)
static char mdi_lParam_test_message[]
static LRESULT WINAPI static_hook_proc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
static const char * szAWRClass
static void check_wnd_state_(const char *file, int line, HWND active, HWND foreground, HWND focus, HWND capture)
static void wine_AdjustWindowRectEx(RECT *rect, LONG style, BOOL menu, LONG exStyle)
static void run_NCRedrawLoop(UINT flags)
static void test_winregion(void)
static const char * test_thick_child_name
static void zero_parentdc_stat(struct parentdc_stat *t)
static COLORREF BYTE DWORD *static BYTE
static void test_winproc_handles(const char *argv0)
static LRESULT WINAPI winproc_convA(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static void check_window_style(DWORD dwStyleIn, DWORD dwExStyleIn, DWORD dwStyleOut, DWORD dwExStyleOut)
static void test_SetParent(void)
static void test_scrolldc(HWND parent)
static LRESULT WINAPI smresult_wndproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static void test_SetWindowLong(void)
static LRESULT expected_id
static void test_children_zorder(HWND parent)
static DWORD WINAPI set_foreground_thread(void *params)
static DWORD WINAPI create_window_thread(void *param)
static BOOL ignore_message(UINT message)
static BOOL app_activated
static LRESULT WINAPI parentdc_window_procA(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static BOOL CALLBACK enum_proc(HWND hwnd, LPARAM lParam)
static WINDOWINFO *static LPSTR
static void test_keyboard_input(HWND hwnd)
static void simulate_click(int x, int y)
static BOOL AWR_init(void)
static void check_parents(HWND hwnd, HWND ga_parent, HWND gwl_parent, HWND get_parent, HWND gw_owner, HWND ga_root, HWND ga_root_owner)
static BOOL app_deactivated
static WNDPROC old_button_proc
static void test_redrawnow(void)
void dump_region(HRGN hrgn)
static void test_Expose(void)
static INT_PTR WINAPI parent_dlg_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
#define expect_gle_broken_9x(gle)
static LRESULT WINAPI winproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static DWORD num_gettext_msgs
#define check_active_state(a, b, c)
static LRESULT WINAPI def_window_procW(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static void test_scrollwindow(HWND hwnd)
static INT_PTR WINAPI empty_dlg_proc3(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static LRESULT WINAPI StyleCheckProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static void test_mdi(void)
static BOOL wait_for_message(MSG *msg)
static BOOL peek_message(MSG *msg)
static void register_style_check_class(void)
static void test_dialog_styles(void)
static void test_FlashWindowEx(void)
static LRESULT WINAPI mdi_child_wnd_proc_2(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static void test_GetWindowModuleFileName(void)
static void verify_window_info(const char *hook, HWND hwnd, const WINDOWINFO *info)
static LRESULT WINAPI button_hook_proc(HWND button, UINT msg, WPARAM wparam, LPARAM lparam)
#define check_wnd_state(a, b, c, d)
static int redrawComplete
#define expect_style(window, style)
static void test_nccalcscroll(HWND parent)
static void test_MDI_create(HWND parent, HWND mdi_client, INT_PTR first_id)
#define check_z_order(hwnd, next, prev, owner, topmost)
static void test_rtl_layout(void)
static void test_popup_zorder(HWND hwnd_D, HWND hwnd_E, DWORD style)
static WNDPROC def_static_proc
static HWND create_tool_window(LONG style, HWND parent)
static void test_AWR_window_size(BOOL menu)
static LRESULT CALLBACK cbt_hook_proc(int nCode, WPARAM wParam, LPARAM lParam)
static LRESULT WINAPI def_window_procA(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static DWORD CALLBACK enum_thread(void *arg)
static COLORREF BYTE DWORD *static DWORD
static void test_SetWindowPos(HWND hwnd, HWND hwnd2)
static void test_enum_thread_windows(void)
static void test_deferwindowpos(void)
#define parentdc_ok(t, got)
static LONG test_thick_child_exStyle
static LRESULT WINAPI reparent_dialog_owner_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static LRESULT WINAPI test_thick_child_size_winproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static LRESULT WINAPI nccalcsize_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static void test_capture_2(void)
static LRESULT WINAPI my_window_proc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
static void test_icons(void)
static LONG test_thick_child_style
static void test_window_from_point(const char *argv0)
static void test_CreateWindow(void)
static BOOL CALLBACK EnumChildProc1(HWND hwndChild, LPARAM lParam)
static void test_IsWindowUnicode(void)
static BOOL test_lbuttondown_flag
static void test_GetLastActivePopup(void)
static INT_PTR WINAPI reparent_owned_dlg_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static RECT expected_rect
static void test_capture_3(HWND hwnd1, HWND hwnd2)
#define SET_FOREGROUND_STEAL_2
static void test_parent_owner(void)
static void test_scrollvalidate(HWND parent)
static const WCHAR textW[]
static void test_child_window_from_point(void)
static LRESULT WINAPI redraw_window_procA(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
#define SET_FOREGROUND_SET_2
static const UPDATELAYEREDWINDOWINFO *static LPMONITORINFO
static void test_mouse_input(HWND hwnd)
static LRESULT WINAPI tool_window_procA(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static LRESULT WINAPI winproc_convW(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static LRESULT WINAPI my_httrasparent_proc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
static LRESULT CALLBACK test_capture_4_proc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static void test_ShowWindow(void)
static void test_AWR_flags(void)
static LRESULT CALLBACK TestNCRedraw_WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
static void test_SetMenu(HWND parent)
static void test_params(void)
#define SHOWSYSMETRIC(SM)
static void test_map_points(void)
static LRESULT CALLBACK TestExposedRegion_WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
static LRESULT WINAPI post_quit_dialog_owner_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static COLORREF BYTE DWORD *static COLORREF
static void test_NCRedraw(void)
static HWND root_dialog(HWND hwnd)
static void zero_parentdc_test(struct parentdc_test *t)
#define SET_FOREGROUND_INJECT
static LRESULT WINAPI set_focus_on_activate_proc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
static void test_winproc_limit(void)
#define SET_FOREGROUND_STEAL_1
static void test_window_tree(HWND parent, const DWORD *style, const int *order, int total)
static void test_GetMessagePos(void)
static DWORD num_settext_msgs
static void test_shell_window(void)
#define NUMBER_OF_THICK_CHILD_TESTS
static BOOL RegisterWindowClasses(void)
static void MDI_ChildGetMinMaxInfo(HWND client, HWND hwnd, MINMAXINFO *lpMinMax)
static void test_thick_child_size(HWND parentWindow)
static void test_capture_4(void)
static void check_active_state_(const char *file, int line, HWND active, HWND foreground, HWND focus)
static void test_vis_rgn(HWND hwnd)
#define expect_menu(window, menu)
static void test_window_styles(void)
static void test_csparentdc(void)
static void test_FlashWindow(void)
static struct wm_gettext_override_data g_wm_gettext_override
static void test_hwnd_message(void)
static LRESULT CALLBACK winsizes_wnd_proc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
static void test_set_window_style(void)
static LRESULT WINAPI mdi_main_wnd_procA(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam)
static void dump_minmax_info(const MINMAXINFO *minmax)
#define expect_ex_style(window, ex_style)
static void test_update_region(void)
static void test_AWRwindow(LPCSTR class, LONG style, LONG exStyle, BOOL menu)
static INT_PTR WINAPI empty_dlg_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static void test_fullscreen(void)
static LRESULT WINAPI main_window_procA(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static LRESULT WINAPI mdi_child_wnd_proc_1(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static void test_scroll(void)
#define PROCESS_ALL_ACCESS
#define WS_OVERLAPPEDWINDOW
#define WS_EX_DLGMODALFRAME
#define WS_EX_TRANSPARENT
static unsigned __int64 next
int winetest_get_mainargs(char ***pargv)
void winetest_wait_child_process(HANDLE process)
#define disable_success_count
static char argv0[MAX_PATH]
struct parentdc_stat child2 child2_todo
struct parentdc_stat child1 child1_todo
struct parentdc_stat main main_todo
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventA(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCSTR lpName OPTIONAL)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
HANDLE WINAPI DECLSPEC_HOTPATCH OpenEventA(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCSTR lpName)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
BOOL WINAPI SetShellWindow(HWND)
static const WCHAR classW[]
int WINAPI GetWindowTextA(HWND hWnd, LPSTR lpString, int nMaxCount)
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
#define success(from, fromstr, to, tostr)
struct tagGUITHREADINFO GUITHREADINFO
UINT WINAPI SendInput(UINT, LPINPUT, int)
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetCurrentThreadId(void)
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
#define ERROR_TLW_WITH_WSCHILD
#define ERROR_INVALID_INDEX
#define ERROR_INVALID_DWP_HANDLE
#define ERROR_INVALID_MENU_HANDLE
#define ERROR_INVALID_WINDOW_HANDLE
static void test_handles(void)
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI GetClipBox(_In_ HDC, _Out_ LPRECT)
HRGN WINAPI CreateRectRgn(_In_ int, _In_ int, _In_ int, _In_ int)
BOOL WINAPI TextOutA(_In_ HDC hdc, _In_ int x, _In_ int y, _In_reads_(c) LPCSTR lpString, _In_ int c)
BOOL WINAPI EqualRgn(_In_ HRGN, _In_ HRGN)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
int WINAPI CombineRgn(_In_opt_ HRGN hrgnDest, _In_opt_ HRGN hrgnSrc1, _In_opt_ HRGN hrgnSrc2, _In_ int fnCombineMode)
HBITMAP WINAPI CreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
int WINAPI GetRandomRgn(_In_ HDC, _In_ HRGN, _In_ INT)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
HRGN WINAPI CreateRectRgnIndirect(_In_ LPCRECT)
BOOL WINAPI DeleteDC(_In_ HDC)
int WINAPI SelectClipRgn(_In_ HDC, _In_opt_ HRGN)
BOOL WINAPI SetRectRgn(_In_ HRGN, _In_ int, _In_ int, _In_ int, _In_ int)
int WINAPI GetRgnBox(_In_ HRGN, _Out_ LPRECT)
HWND WINAPI GetFocus(void)
HWND WINAPI SetCapture(_In_ HWND hWnd)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
LRESULT WINAPI DefFrameProcA(_In_ HWND, _In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define SetWindowLongPtrA
BOOL WINAPI IsWindow(_In_opt_ HWND)
HWND WINAPI GetActiveWindow(void)
HMENU WINAPI CreatePopupMenu(void)
LRESULT WINAPI DefMDIChildProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetMenu(_In_ HWND, _In_opt_ HMENU)
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
void WINAPI mouse_event(_In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ ULONG_PTR)
BOOL WINAPI SetWindowTextA(_In_ HWND, _In_opt_ LPCSTR)
#define GetWindowLongPtrW
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)
BOOL WINAPI ReleaseCapture(void)
DWORD WINAPI GetMessagePos(void)
BOOL WINAPI UnregisterClassA(_In_ LPCSTR, HINSTANCE)
HWND WINAPI GetForegroundWindow(void)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
#define MOUSEEVENTF_LEFTUP
LONG WINAPI GetWindowLongA(_In_ HWND, _In_ int)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI PostMessageW(_In_opt_ 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)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI GetLastActivePopup(_In_ HWND)
LONG WINAPI SetWindowLongA(_In_ HWND, _In_ int, _In_ LONG)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define WS_EX_CONTROLPARENT
struct tagWINDOWINFO WINDOWINFO
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
HWND WINAPI SetParent(_In_ HWND, _In_opt_ HWND)
int WINAPI SetWindowRgn(_In_ HWND, _In_opt_ HRGN, _In_ BOOL)
int WINAPI GetClassNameA(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPSTR lpClassName, _In_ int nMaxCount)
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
HMENU WINAPI CreateMenu(void)
BOOL WINAPI ValidateRect(_In_opt_ HWND, _In_opt_ LPCRECT)
struct tagCREATESTRUCTA * LPCREATESTRUCTA
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
BOOL WINAPI SetForegroundWindow(_In_ HWND)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
BOOL WINAPI AdjustWindowRectEx(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL, _In_ DWORD)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define SW_SHOWNOACTIVATE
BOOL WINAPI IsRectEmpty(_In_ LPCRECT)
HWND WINAPI CreateMDIWindowA(_In_ LPCSTR, _In_ LPCSTR, _In_ DWORD, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ HWND, _In_opt_ HINSTANCE, _In_ LPARAM)
HWND WINAPI GetCapture(void)
BOOL WINAPI IsMenu(_In_ HMENU)
#define GetWindowLongPtrA
HWND WINAPI FindWindowExA(_In_opt_ HWND, _In_opt_ HWND, _In_opt_ LPCSTR, _In_opt_ LPCSTR)
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
BOOL WINAPI SetCursorPos(_In_ int, _In_ int)
LRESULT WINAPI DefDlgProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI EnumChildWindows(_In_opt_ HWND, _In_ WNDENUMPROC, _In_ LPARAM)
DWORD WINAPI MsgWaitForMultipleObjects(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ BOOL fWaitAll, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
#define MDIS_ALLCHILDSTYLES
BOOL WINAPI GetScrollRange(_In_ HWND, _In_ int, _Out_ LPINT, _Out_ LPINT)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
HHOOK WINAPI SetWindowsHookExA(_In_ int, _In_ HOOKPROC, _In_opt_ HINSTANCE, _In_ DWORD)
HWND WINAPI GetDesktopWindow(void)
BOOL WINAPI IsWindowUnicode(_In_ HWND)
#define MOUSEEVENTF_LEFTDOWN
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
ATOM WINAPI RegisterClassExA(_In_ CONST WNDCLASSEXA *)
BOOL WINAPI SendNotifyMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI UnhookWindowsHookEx(_In_ HHOOK)
BOOL WINAPI IsChild(_In_ HWND, _In_ HWND)
HWND WINAPI SetActiveWindow(_In_ HWND)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR 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)
HWND WINAPI CreateDialogIndirectParamA(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
HICON WINAPI LoadIconA(_In_opt_ HINSTANCE hInstance, _In_ LPCSTR lpIconName)
BOOL WINAPI ScrollDC(_In_ HDC, _In_ int, _In_ int, _In_opt_ LPCRECT, _In_opt_ LPCRECT, _In_opt_ HRGN, _Out_opt_ LPRECT)
int WINAPI GetUpdateRgn(_In_ HWND, _In_ HRGN, _In_ BOOL)
BOOL WINAPI UpdateWindow(_In_ HWND)
BOOL WINAPI ValidateRgn(_In_ HWND, _In_opt_ HRGN)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL WINAPI AppendMenuA(_In_ HMENU, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCSTR)
VOID WINAPI keybd_event(_In_ BYTE, _In_ BYTE, _In_ DWORD, _In_ ULONG_PTR)
BOOL WINAPI GetClassInfoA(_In_opt_ HINSTANCE, _In_ LPCSTR, _Out_ LPWNDCLASSA)
INT_PTR WINAPI DialogBoxIndirectParamA(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
BOOL WINAPI IsWindowEnabled(_In_ HWND)
HWND WINAPI GetParent(_In_ HWND)
BOOL WINAPI DestroyMenu(_In_ HMENU)
LRESULT WINAPI CallNextHookEx(_In_opt_ HHOOK, _In_ int, _In_ WPARAM, _In_ LPARAM)
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
HANDLE WINAPI LoadImageA(_In_opt_ HINSTANCE hInst, _In_ LPCSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
HWND WINAPI WindowFromPoint(_In_ POINT)
BOOL WINAPI PeekMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
HDWP WINAPI DeferWindowPos(_In_ HDWP, _In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
DWORD WINAPI GetClassLongA(_In_ HWND, _In_ int)
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
HWND WINAPI RealChildWindowFromPoint(_In_ HWND, _In_ POINT)
#define WS_EX_LEFTSCROLLBAR
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
BOOL WINAPI PostThreadMessageA(_In_ DWORD, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
BOOL WINAPI EnumThreadWindows(_In_ DWORD, _In_ WNDENUMPROC, _In_ LPARAM)
BOOL WINAPI GetClassInfoW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _Out_ LPWNDCLASSW)
#define SetWindowLongPtrW
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
BOOL WINAPI GetScrollInfo(_In_ HWND, _In_ int, _Inout_ LPSCROLLINFO)
BOOL WINAPI GetUpdateRect(_In_ HWND, _Out_opt_ LPRECT, _In_ BOOL)
HWND WINAPI FindWindowA(_In_opt_ LPCSTR, _In_opt_ LPCSTR)
#define WM_WINDOWPOSCHANGED
BOOL WINAPI IsWindowVisible(_In_ HWND)
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)
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WS_EX_NOINHERITLAYOUT
HWND WINAPI CreateMDIWindowW(_In_ LPCWSTR, _In_ LPCWSTR, _In_ DWORD, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ HWND, _In_opt_ HINSTANCE, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HMENU WINAPI GetMenu(_In_ HWND)
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)
SHORT WINAPI GetKeyState(_In_ int)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
HDWP WINAPI BeginDeferWindowPos(_In_ int)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)