Author: jimtabor Date: Thu Jan 26 15:55:16 2012 New Revision: 55209
URL: http://svn.reactos.org/svn/reactos?rev=55209&view=rev Log: [User32_wineTest] - Sync to Wine 1.3.37.
Modified: trunk/rostests/winetests/user32/broadcast.c trunk/rostests/winetests/user32/class.c trunk/rostests/winetests/user32/combo.c trunk/rostests/winetests/user32/cursoricon.c trunk/rostests/winetests/user32/dce.c trunk/rostests/winetests/user32/dialog.c trunk/rostests/winetests/user32/edit.c trunk/rostests/winetests/user32/generated.c trunk/rostests/winetests/user32/input.c trunk/rostests/winetests/user32/msg.c trunk/rostests/winetests/user32/resource.c trunk/rostests/winetests/user32/resource.rc trunk/rostests/winetests/user32/scroll.c trunk/rostests/winetests/user32/static.c trunk/rostests/winetests/user32/sysparams.c trunk/rostests/winetests/user32/win.c
Modified: trunk/rostests/winetests/user32/broadcast.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/broadcast... ============================================================================== --- trunk/rostests/winetests/user32/broadcast.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/broadcast.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -20,7 +20,6 @@
//#define _WIN32_WINNT 0x0501
-#include <assert.h> #include <stdarg.h> #include <stdio.h>
Modified: trunk/rostests/winetests/user32/class.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/class.c?r... ============================================================================== --- trunk/rostests/winetests/user32/class.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/class.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -21,7 +21,6 @@ /* To get CS_DROPSHADOW with the MSVC headers */ //#define _WIN32_WINNT 0x0501
-#include <assert.h> #include <stdlib.h> #include <stdarg.h> #include <stdio.h>
Modified: trunk/rostests/winetests/user32/combo.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/combo.c?r... ============================================================================== --- trunk/rostests/winetests/user32/combo.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/combo.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -17,7 +17,6 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#include <assert.h> #include <stdarg.h> #include <stdio.h>
Modified: trunk/rostests/winetests/user32/cursoricon.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/cursorico... ============================================================================== --- trunk/rostests/winetests/user32/cursoricon.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/cursoricon.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -20,7 +20,6 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#include <assert.h> #include <stdlib.h> #include <stdarg.h> #include <stdio.h> @@ -185,7 +184,7 @@ 0, /* biYPelsPerMeter */ \ 0, /* biClrUsed */ \ 0 /* biClrImportant */ \ - }, \ + } \ /* DIB data: left uninitialized */ \ } \ } @@ -697,7 +696,7 @@ ok(error == 0xdeadbeef, "Last error: 0x%08x\n", error); }
-static void test_icon_info_dbg(HICON hIcon, UINT exp_cx, UINT exp_cy, UINT exp_bpp, int line) +static void test_icon_info_dbg(HICON hIcon, UINT exp_cx, UINT exp_cy, UINT exp_mask_cy, UINT exp_bpp, int line) { ICONINFO info; DWORD ret; @@ -737,13 +736,13 @@
ok_(__FILE__, line)(bmMask.bmBitsPixel == 1, "bmMask.bmBitsPixel = %d\n", bmMask.bmBitsPixel); ok_(__FILE__, line)(bmMask.bmWidth == exp_cx, "bmMask.bmWidth = %d\n", bmMask.bmWidth); - ok_(__FILE__, line)(bmMask.bmHeight == exp_cy, "bmMask.bmHeight = %d\n", bmMask.bmHeight); + ok_(__FILE__, line)(bmMask.bmHeight == exp_mask_cy, "bmMask.bmHeight = %d\n", bmMask.bmHeight); } else { ok_(__FILE__, line)(bmMask.bmBitsPixel == 1, "bmMask.bmBitsPixel = %d\n", bmMask.bmBitsPixel); ok_(__FILE__, line)(bmMask.bmWidth == exp_cx, "bmMask.bmWidth = %d\n", bmMask.bmWidth); - ok_(__FILE__, line)(bmMask.bmHeight == exp_cy * 2, "bmMask.bmHeight = %d\n", bmMask.bmHeight); + ok_(__FILE__, line)(bmMask.bmHeight == exp_mask_cy, "bmMask.bmHeight = %d\n", bmMask.bmHeight); } if (pGetIconInfoExA) { @@ -778,7 +777,7 @@ } }
-#define test_icon_info(a,b,c,d) test_icon_info_dbg((a),(b),(c),(d),__LINE__) +#define test_icon_info(a,b,c,d,e) test_icon_info_dbg((a),(b),(c),(d),(e),__LINE__)
static void test_CreateIcon(void) { @@ -790,6 +789,7 @@ HDC hdc; void *bits; UINT display_bpp; + int i;
hdc = GetDC(0); display_bpp = GetDeviceCaps(hdc, BITSPIXEL); @@ -801,12 +801,12 @@
hIcon = CreateIcon(0, 16, 16, 1, 1, bmp_bits, bmp_bits); ok(hIcon != 0, "CreateIcon failed\n"); - test_icon_info(hIcon, 16, 16, 1); + test_icon_info(hIcon, 16, 16, 32, 1); DestroyIcon(hIcon);
hIcon = CreateIcon(0, 16, 16, 1, display_bpp, bmp_bits, bmp_bits); ok(hIcon != 0, "CreateIcon failed\n"); - test_icon_info(hIcon, 16, 16, display_bpp); + test_icon_info(hIcon, 16, 16, 16, display_bpp); DestroyIcon(hIcon);
hbmMask = CreateBitmap(16, 16, 1, 1, bmp_bits); @@ -841,7 +841,7 @@ info.hbmColor = hbmColor; hIcon = CreateIconIndirect(&info); ok(hIcon != 0, "CreateIconIndirect failed\n"); - test_icon_info(hIcon, 16, 16, display_bpp); + test_icon_info(hIcon, 16, 16, 16, display_bpp); DestroyIcon(hIcon);
DeleteObject(hbmMask); @@ -858,11 +858,27 @@ SetLastError(0xdeadbeaf); hIcon = CreateIconIndirect(&info); ok(hIcon != 0, "CreateIconIndirect failed\n"); - test_icon_info(hIcon, 16, 16, 1); + test_icon_info(hIcon, 16, 16, 32, 1); DestroyIcon(hIcon); - DeleteObject(hbmMask); - DeleteObject(hbmColor); + + for (i = 0; i <= 4; i++) + { + hbmMask = CreateBitmap(1, i, 1, 1, bmp_bits); + ok(hbmMask != 0, "CreateBitmap failed\n"); + + info.fIcon = TRUE; + info.xHotspot = 0; + info.yHotspot = 0; + info.hbmMask = hbmMask; + info.hbmColor = 0; + SetLastError(0xdeadbeaf); + hIcon = CreateIconIndirect(&info); + ok(hIcon != 0, "CreateIconIndirect failed\n"); + test_icon_info(hIcon, 1, i / 2, max(i,1), 1); + DestroyIcon(hIcon); + DeleteObject(hbmMask); + }
/* test creating an icon from a DIB section */
@@ -891,7 +907,7 @@ SetLastError(0xdeadbeaf); hIcon = CreateIconIndirect(&info); ok(hIcon != 0, "CreateIconIndirect failed\n"); - test_icon_info(hIcon, 32, 32, 8); + test_icon_info(hIcon, 32, 32, 32, 8); DestroyIcon(hIcon); DeleteObject(hbmColor);
@@ -909,7 +925,7 @@ SetLastError(0xdeadbeaf); hIcon = CreateIconIndirect(&info); ok(hIcon != 0, "CreateIconIndirect failed\n"); - test_icon_info(hIcon, 32, 32, 8); + test_icon_info(hIcon, 32, 32, 32, 8); DestroyIcon(hIcon); DeleteObject(hbmColor);
@@ -927,7 +943,7 @@ SetLastError(0xdeadbeaf); hIcon = CreateIconIndirect(&info); ok(hIcon != 0, "CreateIconIndirect failed\n"); - test_icon_info(hIcon, 32, 32, 8); + test_icon_info(hIcon, 32, 32, 32, 8); DestroyIcon(hIcon);
DeleteObject(hbmMask);
Modified: trunk/rostests/winetests/user32/dce.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/dce.c?rev... ============================================================================== --- trunk/rostests/winetests/user32/dce.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/dce.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -18,7 +18,6 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#include <assert.h> #include <stdlib.h> #include <stdarg.h> #include <stdio.h>
Modified: trunk/rostests/winetests/user32/dialog.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/dialog.c?... ============================================================================== --- trunk/rostests/winetests/user32/dialog.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/dialog.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -32,6 +32,9 @@ #include <assert.h> #include <stdio.h> #include <stdarg.h> + +#undef WINVER +#define WINVER 0x0600 /* For NONCLIENTMETRICS with padding */
#include "wine/test.h" #include "windef.h" @@ -830,8 +833,7 @@ { /* Test 1: * This test intentionally returns FALSE in response to WM_INITDIALOG - * without setting focus to a control. This is not allowed according to - * MSDN, but it is exactly what MFC's CFormView does. + * without setting focus to a control. This is what MFC's CFormView does. * * Since the WM_INITDIALOG handler returns FALSE without setting the focus, * the focus should initially be NULL. Later, when we manually set focus to @@ -910,6 +912,31 @@
ok ((g_hwndInitialFocusT1 == 0), "Focus should not be set for an invisible DS_CONTROL dialog %p.\n", g_hwndInitialFocusT1); + + DestroyWindow(hDlg); + } + + /* Test 4: + * If the dialog has no tab-accessible controls, set focus to first control */ + { + HWND hDlg; + HRSRC hResource; + HANDLE hTemplate; + DLGTEMPLATE* pTemplate; + HWND hLabel; + + hResource = FindResourceA(g_hinst,"FOCUS_TEST_DIALOG_2", RT_DIALOG); + hTemplate = LoadResource(g_hinst, hResource); + pTemplate = LockResource(hTemplate); + + hDlg = CreateDialogIndirectParamA(g_hinst, pTemplate, NULL, focusDlgWinProc, 0); + g_hwndInitialFocusT1 = GetFocus(); + hLabel = GetDlgItem(hDlg, 200); + ok (hDlg != 0, "Failed to create test dialog.\n"); + + ok ((g_hwndInitialFocusT1 == hLabel), + "Focus should have been set to the first control, expected (%p) got (%p).\n", + hLabel, g_hwndInitialFocusT1);
DestroyWindow(hDlg); } @@ -1058,10 +1085,49 @@ return FALSE; }
+static INT_PTR CALLBACK TestControlStyleDlgProc(HWND hdlg, UINT msg, + WPARAM wparam, LPARAM lparam) +{ + HWND control; + DWORD style, exstyle; + char buf[256]; + + switch (msg) + { + case WM_INITDIALOG: + control = GetDlgItem(hdlg, 7); + ok(control != 0, "dialog control with id 7 not found\n"); + style = GetWindowLong(control, GWL_STYLE); + ok(style == (WS_CHILD|WS_VISIBLE), "expected WS_CHILD|WS_VISIBLE, got %#x\n", style); + exstyle = GetWindowLong(control, GWL_EXSTYLE); + ok(exstyle == (WS_EX_NOPARENTNOTIFY|WS_EX_TRANSPARENT|WS_EX_CLIENTEDGE), "expected WS_EX_NOPARENTNOTIFY|WS_EX_TRANSPARENT|WS_EX_CLIENTEDGE, got %#x\n", exstyle); + buf[0] = 0; + GetWindowText(control, buf, sizeof(buf)); + ok(lstrcmp(buf, "bump7") == 0, "expected bump7, got %s\n", buf); + + control = GetDlgItem(hdlg, 8); + ok(control != 0, "dialog control with id 8 not found\n"); + style = GetWindowLong(control, GWL_STYLE); + ok(style == (WS_CHILD|WS_VISIBLE), "expected WS_CHILD|WS_VISIBLE, got %#x\n", style); + exstyle = GetWindowLong(control, GWL_EXSTYLE); + ok(exstyle == (WS_EX_NOPARENTNOTIFY|WS_EX_TRANSPARENT), "expected WS_EX_NOPARENTNOTIFY|WS_EX_TRANSPARENT, got %#x\n", exstyle); + buf[0] = 0; + GetWindowText(control, buf, sizeof(buf)); + ok(lstrcmp(buf, "bump8") == 0, "expected bump8, got %s\n", buf); + + EndDialog(hdlg, -7); + return TRUE; + } + return FALSE; +} + static void test_DialogBoxParamA(void) { INT_PTR ret; HWND hwnd_invalid = (HWND)0x4444; + + ret = DialogBoxParamA(GetModuleHandle(0), "TEST_DLG_CHILD_POPUP", 0, TestControlStyleDlgProc, 0); + ok(ret == -7, "expected -7, got %ld\n", ret);
SetLastError(0xdeadbeef); ret = DialogBoxParamA(GetModuleHandle(NULL), "IDD_DIALOG" , hwnd_invalid, 0 , 0); @@ -1109,7 +1175,7 @@ static void test_DisabledDialogTest(void) { g_terminated = FALSE; - DialogBoxParam(g_hinst, "IDD_DIALOG", NULL, (DLGPROC)disabled_test_proc, 0); + DialogBoxParam(g_hinst, "IDD_DIALOG", NULL, disabled_test_proc, 0); ok(FALSE == g_terminated, "dialog with disabled ok button has been terminated\n"); }
@@ -1198,7 +1264,7 @@ } GetObjectW(hFont, sizeof(LOGFONTW), &lfStaticFont);
- ncMetrics.cbSize = sizeof(NONCLIENTMETRICSW); + ncMetrics.cbSize = FIELD_OFFSET(NONCLIENTMETRICSW, iPaddedBorderWidth); SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, 0, &ncMetrics, 0); ok( !memcmp(&lfStaticFont, &ncMetrics.lfMessageFont, FIELD_OFFSET(LOGFONTW, lfFaceName)) && !lstrcmpW(lfStaticFont.lfFaceName, ncMetrics.lfMessageFont.lfFaceName),
Modified: trunk/rostests/winetests/user32/edit.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/edit.c?re... ============================================================================== --- trunk/rostests/winetests/user32/edit.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/edit.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -1736,7 +1736,7 @@
hwEdit = create_editcontrol(ES_PASSWORD, 0); r = get_edit_style(hwEdit); - ok(r == ES_PASSWORD, "Wrong style expected 0x%x got: 0x%x\n", ES_PASSWORD, r); + ok(r == ES_PASSWORD, "Wrong style expected ES_PASSWORD got: 0x%x\n", r); /* set text */ r = SendMessage(hwEdit , WM_SETTEXT, 0, (LPARAM) password); ok(r == TRUE, "Expected: %d, got: %d\n", TRUE, r); @@ -1840,7 +1840,7 @@ /* multiline */ hwEdit = create_editcontrol(ES_MULTILINE, 0); r = get_edit_style(hwEdit); - ok(ES_MULTILINE == r, "Wrong style expected 0x%x got: 0x%x\n", ES_MULTILINE, r); + ok(ES_MULTILINE == r, "Wrong style expected ES_MULTILINE got: 0x%x\n", r);
/* set text */ r = SendMessage(hwEdit , WM_SETTEXT, 0, (LPARAM) ""); @@ -1880,7 +1880,7 @@ /* single line with ES_WANTRETURN */ hwEdit = create_editcontrol(ES_WANTRETURN, 0); r = get_edit_style(hwEdit); - ok(ES_WANTRETURN == r, "Wrong style expected 0x%x got: 0x%x\n", ES_WANTRETURN, r); + ok(ES_WANTRETURN == r, "Wrong style expected ES_WANTRETURN got: 0x%x\n", r);
/* set text */ r = SendMessage(hwEdit , WM_SETTEXT, 0, (LPARAM) ""); @@ -1907,7 +1907,7 @@ /* multiline */ hwEdit = create_editcontrol(ES_MULTILINE, 0); r = get_edit_style(hwEdit); - ok(ES_MULTILINE == r, "Wrong style expected 0x%x got: 0x%x\n", ES_MULTILINE, r); + ok(ES_MULTILINE == r, "Wrong style expected ES_MULTILINE got: 0x%x\n", r);
/* set text */ r = SendMessage(hwEdit , WM_SETTEXT, 0, (LPARAM) ""); @@ -1950,57 +1950,57 @@ int r;
/* from bug 11841 */ - r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 0); + r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, edit_dialog_proc, 0); ok(333 == r, "Expected %d, got %d\n", 333, r); - r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 1); + r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, edit_dialog_proc, 1); ok(111 == r, "Expected %d, got %d\n", 111, r); - r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 2); + r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, edit_dialog_proc, 2); ok(444 == r, "Expected %d, got %d\n", 444, r);
/* more tests for WM_CHAR */ - r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 3); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 4); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 5); + r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, edit_dialog_proc, 3); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, edit_dialog_proc, 4); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, edit_dialog_proc, 5); ok(444 == r, "Expected %d, got %d\n", 444, r);
/* more tests for WM_KEYDOWN + WM_CHAR */ - r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 6); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 7); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 8); + r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, edit_dialog_proc, 6); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, edit_dialog_proc, 7); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_READONLY_DIALOG", NULL, edit_dialog_proc, 8); ok(444 == r, "Expected %d, got %d\n", 444, r);
/* tests with an editable edit control */ - r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 0); + r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, edit_dialog_proc, 0); ok(333 == r, "Expected %d, got %d\n", 333, r); - r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 1); + r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, edit_dialog_proc, 1); ok(111 == r, "Expected %d, got %d\n", 111, r); - r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 2); + r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, edit_dialog_proc, 2); ok(444 == r, "Expected %d, got %d\n", 444, r);
/* tests for WM_CHAR */ - r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 3); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 4); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 5); + r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, edit_dialog_proc, 3); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, edit_dialog_proc, 4); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, edit_dialog_proc, 5); ok(444 == r, "Expected %d, got %d\n", 444, r);
/* tests for WM_KEYDOWN + WM_CHAR */ - r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 6); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 7); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 8); + r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, edit_dialog_proc, 6); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, edit_dialog_proc, 7); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, edit_dialog_proc, 8); ok(444 == r, "Expected %d, got %d\n", 444, r);
/* multiple tab tests */ - r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 9); + r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, edit_dialog_proc, 9); ok(22 == r, "Expected %d, got %d\n", 22, r); - r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, (DLGPROC)edit_dialog_proc, 10); + r = DialogBoxParam(hinst, "EDIT_DIALOG", NULL, edit_dialog_proc, 10); ok(33 == r, "Expected %d, got %d\n", 33, r); }
@@ -2009,13 +2009,13 @@ int r;
/* test for multiple edit dialogs (bug 12319) */ - r = DialogBoxParam(hinst, "MULTI_EDIT_DIALOG", NULL, (DLGPROC)multi_edit_dialog_proc, 0); + r = DialogBoxParam(hinst, "MULTI_EDIT_DIALOG", NULL, multi_edit_dialog_proc, 0); ok(2222 == r, "Expected %d, got %d\n", 2222, r); - r = DialogBoxParam(hinst, "MULTI_EDIT_DIALOG", NULL, (DLGPROC)multi_edit_dialog_proc, 1); + r = DialogBoxParam(hinst, "MULTI_EDIT_DIALOG", NULL, multi_edit_dialog_proc, 1); ok(1111 == r, "Expected %d, got %d\n", 1111, r); - r = DialogBoxParam(hinst, "MULTI_EDIT_DIALOG", NULL, (DLGPROC)multi_edit_dialog_proc, 2); + r = DialogBoxParam(hinst, "MULTI_EDIT_DIALOG", NULL, multi_edit_dialog_proc, 2); ok(2222 == r, "Expected %d, got %d\n", 2222, r); - r = DialogBoxParam(hinst, "MULTI_EDIT_DIALOG", NULL, (DLGPROC)multi_edit_dialog_proc, 3); + r = DialogBoxParam(hinst, "MULTI_EDIT_DIALOG", NULL, multi_edit_dialog_proc, 3); ok(11 == r, "Expected %d, got %d\n", 11, r); }
@@ -2024,27 +2024,27 @@ int r;
/* tests for WM_KEYDOWN */ - r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_wantreturn_dialog_proc, 0); + r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, edit_wantreturn_dialog_proc, 0); ok(333 == r, "Expected %d, got %d\n", 333, r); - r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_wantreturn_dialog_proc, 1); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_wantreturn_dialog_proc, 2); + r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, edit_wantreturn_dialog_proc, 1); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, edit_wantreturn_dialog_proc, 2); ok(444 == r, "Expected %d, got %d\n", 444, r);
/* tests for WM_CHAR */ - r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_wantreturn_dialog_proc, 3); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_wantreturn_dialog_proc, 4); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_wantreturn_dialog_proc, 5); + r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, edit_wantreturn_dialog_proc, 3); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, edit_wantreturn_dialog_proc, 4); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, edit_wantreturn_dialog_proc, 5); ok(444 == r, "Expected %d, got %d\n", 444, r);
/* tests for WM_KEYDOWN + WM_CHAR */ - r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_wantreturn_dialog_proc, 6); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_wantreturn_dialog_proc, 7); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_wantreturn_dialog_proc, 8); + r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, edit_wantreturn_dialog_proc, 6); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, edit_wantreturn_dialog_proc, 7); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_WANTRETURN_DIALOG", NULL, edit_wantreturn_dialog_proc, 8); ok(444 == r, "Expected %d, got %d\n", 444, r); }
@@ -2053,51 +2053,51 @@ int r;
/* tests for WM_KEYDOWN */ - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 0); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, edit_singleline_dialog_proc, 0); ok(222 == r, "Expected %d, got %d\n", 222, r); - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 1); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, edit_singleline_dialog_proc, 1); ok(111 == r, "Expected %d, got %d\n", 111, r); - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 2); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, edit_singleline_dialog_proc, 2); ok(444 == r, "Expected %d, got %d\n", 444, r);
/* tests for WM_CHAR */ - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 3); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 4); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 5); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, edit_singleline_dialog_proc, 3); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, edit_singleline_dialog_proc, 4); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, edit_singleline_dialog_proc, 5); ok(444 == r, "Expected %d, got %d\n", 444, r);
/* tests for WM_KEYDOWN + WM_CHAR */ - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 6); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, edit_singleline_dialog_proc, 6); ok(222 == r, "Expected %d, got %d\n", 222, r); - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 7); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, edit_singleline_dialog_proc, 7); ok(111 == r, "Expected %d, got %d\n", 111, r); - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 8); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, edit_singleline_dialog_proc, 8); ok(444 == r, "Expected %d, got %d\n", 444, r);
/* tests for WM_KEYDOWN */ - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 0); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, edit_singleline_dialog_proc, 0); ok(222 == r, "Expected %d, got %d\n", 222, r); - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 1); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, edit_singleline_dialog_proc, 1); ok(111 == r, "Expected %d, got %d\n", 111, r); - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 2); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, edit_singleline_dialog_proc, 2); ok(444 == r, "Expected %d, got %d\n", 444, r);
/* tests for WM_CHAR */ - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 3); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 4); - ok(444 == r, "Expected %d, got %d\n", 444, r); - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 5); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, edit_singleline_dialog_proc, 3); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, edit_singleline_dialog_proc, 4); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, edit_singleline_dialog_proc, 5); ok(444 == r, "Expected %d, got %d\n", 444, r);
/* tests for WM_KEYDOWN + WM_CHAR */ - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 6); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, edit_singleline_dialog_proc, 6); ok(222 == r, "Expected %d, got %d\n", 222, r); - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 7); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, edit_singleline_dialog_proc, 7); ok(111 == r, "Expected %d, got %d\n", 111, r); - r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 8); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, edit_singleline_dialog_proc, 8); ok(444 == r, "Expected %d, got %d\n", 444, r); }
Modified: trunk/rostests/winetests/user32/generated.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/generated... ============================================================================== --- trunk/rostests/winetests/user32/generated.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/generated.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -5,7 +5,8 @@ * Unit tests for data structure packing */
-//#define WINVER 0x0501 +#undef WINVER +#define WINVER 0x0600 //#define _WIN32_IE 0x0501 //#define _WIN32_WINNT 0x0501
@@ -1562,7 +1563,7 @@ /* LPNONCLIENTMETRICSA */ TEST_TYPE_SIZE (LPNONCLIENTMETRICSA, 8) TEST_TYPE_ALIGN (LPNONCLIENTMETRICSA, 8) - TEST_TARGET_SIZE (LPNONCLIENTMETRICSA, 340) + TEST_TARGET_SIZE (LPNONCLIENTMETRICSA, 344) TEST_TARGET_ALIGN(LPNONCLIENTMETRICSA, 4) }
@@ -1571,7 +1572,7 @@ /* LPNONCLIENTMETRICSW */ TEST_TYPE_SIZE (LPNONCLIENTMETRICSW, 8) TEST_TYPE_ALIGN (LPNONCLIENTMETRICSW, 8) - TEST_TARGET_SIZE (LPNONCLIENTMETRICSW, 500) + TEST_TARGET_SIZE (LPNONCLIENTMETRICSW, 504) TEST_TARGET_ALIGN(LPNONCLIENTMETRICSW, 4) }
@@ -2390,7 +2391,7 @@ static void test_pack_NONCLIENTMETRICSA(void) { /* NONCLIENTMETRICSA */ - TEST_TYPE_SIZE (NONCLIENTMETRICSA, 340) + TEST_TYPE_SIZE (NONCLIENTMETRICSA, 344) TEST_TYPE_ALIGN (NONCLIENTMETRICSA, 4) TEST_FIELD_SIZE (NONCLIENTMETRICSA, cbSize, 4) TEST_FIELD_ALIGN (NONCLIENTMETRICSA, cbSize, 4) @@ -2437,12 +2438,15 @@ TEST_FIELD_SIZE (NONCLIENTMETRICSA, lfMessageFont, 60) TEST_FIELD_ALIGN (NONCLIENTMETRICSA, lfMessageFont, 4) TEST_FIELD_OFFSET(NONCLIENTMETRICSA, lfMessageFont, 280) + TEST_FIELD_SIZE (NONCLIENTMETRICSA, iPaddedBorderWidth, 4) + TEST_FIELD_ALIGN (NONCLIENTMETRICSA, iPaddedBorderWidth, 4) + TEST_FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth, 340) }
static void test_pack_NONCLIENTMETRICSW(void) { /* NONCLIENTMETRICSW */ - TEST_TYPE_SIZE (NONCLIENTMETRICSW, 500) + TEST_TYPE_SIZE (NONCLIENTMETRICSW, 504) TEST_TYPE_ALIGN (NONCLIENTMETRICSW, 4) TEST_FIELD_SIZE (NONCLIENTMETRICSW, cbSize, 4) TEST_FIELD_ALIGN (NONCLIENTMETRICSW, cbSize, 4) @@ -2489,6 +2493,9 @@ TEST_FIELD_SIZE (NONCLIENTMETRICSW, lfMessageFont, 92) TEST_FIELD_ALIGN (NONCLIENTMETRICSW, lfMessageFont, 4) TEST_FIELD_OFFSET(NONCLIENTMETRICSW, lfMessageFont, 408) + TEST_FIELD_SIZE (NONCLIENTMETRICSW, iPaddedBorderWidth, 4) + TEST_FIELD_ALIGN (NONCLIENTMETRICSW, iPaddedBorderWidth, 4) + TEST_FIELD_OFFSET(NONCLIENTMETRICSW, iPaddedBorderWidth, 500) }
static void test_pack_PAINTSTRUCT(void) @@ -2870,7 +2877,7 @@ /* PNONCLIENTMETRICSA */ TEST_TYPE_SIZE (PNONCLIENTMETRICSA, 8) TEST_TYPE_ALIGN (PNONCLIENTMETRICSA, 8) - TEST_TARGET_SIZE (PNONCLIENTMETRICSA, 340) + TEST_TARGET_SIZE (PNONCLIENTMETRICSA, 344) TEST_TARGET_ALIGN(PNONCLIENTMETRICSA, 4) }
@@ -2879,7 +2886,7 @@ /* PNONCLIENTMETRICSW */ TEST_TYPE_SIZE (PNONCLIENTMETRICSW, 8) TEST_TYPE_ALIGN (PNONCLIENTMETRICSW, 8) - TEST_TARGET_SIZE (PNONCLIENTMETRICSW, 500) + TEST_TARGET_SIZE (PNONCLIENTMETRICSW, 504) TEST_TARGET_ALIGN(PNONCLIENTMETRICSW, 4) }
@@ -5060,7 +5067,7 @@ /* LPNONCLIENTMETRICSA */ TEST_TYPE_SIZE (LPNONCLIENTMETRICSA, 4) TEST_TYPE_ALIGN (LPNONCLIENTMETRICSA, 4) - TEST_TARGET_SIZE (LPNONCLIENTMETRICSA, 340) + TEST_TARGET_SIZE (LPNONCLIENTMETRICSA, 344) TEST_TARGET_ALIGN(LPNONCLIENTMETRICSA, 4) }
@@ -5069,7 +5076,7 @@ /* LPNONCLIENTMETRICSW */ TEST_TYPE_SIZE (LPNONCLIENTMETRICSW, 4) TEST_TYPE_ALIGN (LPNONCLIENTMETRICSW, 4) - TEST_TARGET_SIZE (LPNONCLIENTMETRICSW, 500) + TEST_TARGET_SIZE (LPNONCLIENTMETRICSW, 504) TEST_TARGET_ALIGN(LPNONCLIENTMETRICSW, 4) }
@@ -5888,7 +5895,7 @@ static void test_pack_NONCLIENTMETRICSA(void) { /* NONCLIENTMETRICSA */ - TEST_TYPE_SIZE (NONCLIENTMETRICSA, 340) + TEST_TYPE_SIZE (NONCLIENTMETRICSA, 344) TEST_TYPE_ALIGN (NONCLIENTMETRICSA, 4) TEST_FIELD_SIZE (NONCLIENTMETRICSA, cbSize, 4) TEST_FIELD_ALIGN (NONCLIENTMETRICSA, cbSize, 4) @@ -5935,12 +5942,15 @@ TEST_FIELD_SIZE (NONCLIENTMETRICSA, lfMessageFont, 60) TEST_FIELD_ALIGN (NONCLIENTMETRICSA, lfMessageFont, 4) TEST_FIELD_OFFSET(NONCLIENTMETRICSA, lfMessageFont, 280) + TEST_FIELD_SIZE (NONCLIENTMETRICSA, iPaddedBorderWidth, 4) + TEST_FIELD_ALIGN (NONCLIENTMETRICSA, iPaddedBorderWidth, 4) + TEST_FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth, 340) }
static void test_pack_NONCLIENTMETRICSW(void) { /* NONCLIENTMETRICSW */ - TEST_TYPE_SIZE (NONCLIENTMETRICSW, 500) + TEST_TYPE_SIZE (NONCLIENTMETRICSW, 504) TEST_TYPE_ALIGN (NONCLIENTMETRICSW, 4) TEST_FIELD_SIZE (NONCLIENTMETRICSW, cbSize, 4) TEST_FIELD_ALIGN (NONCLIENTMETRICSW, cbSize, 4) @@ -5987,6 +5997,9 @@ TEST_FIELD_SIZE (NONCLIENTMETRICSW, lfMessageFont, 92) TEST_FIELD_ALIGN (NONCLIENTMETRICSW, lfMessageFont, 4) TEST_FIELD_OFFSET(NONCLIENTMETRICSW, lfMessageFont, 408) + TEST_FIELD_SIZE (NONCLIENTMETRICSW, iPaddedBorderWidth, 4) + TEST_FIELD_ALIGN (NONCLIENTMETRICSW, iPaddedBorderWidth, 4) + TEST_FIELD_OFFSET(NONCLIENTMETRICSW, iPaddedBorderWidth, 500) }
static void test_pack_PAINTSTRUCT(void) @@ -6368,7 +6381,7 @@ /* PNONCLIENTMETRICSA */ TEST_TYPE_SIZE (PNONCLIENTMETRICSA, 4) TEST_TYPE_ALIGN (PNONCLIENTMETRICSA, 4) - TEST_TARGET_SIZE (PNONCLIENTMETRICSA, 340) + TEST_TARGET_SIZE (PNONCLIENTMETRICSA, 344) TEST_TARGET_ALIGN(PNONCLIENTMETRICSA, 4) }
@@ -6377,7 +6390,7 @@ /* PNONCLIENTMETRICSW */ TEST_TYPE_SIZE (PNONCLIENTMETRICSW, 4) TEST_TYPE_ALIGN (PNONCLIENTMETRICSW, 4) - TEST_TARGET_SIZE (PNONCLIENTMETRICSW, 500) + TEST_TARGET_SIZE (PNONCLIENTMETRICSW, 504) TEST_TARGET_ALIGN(PNONCLIENTMETRICSW, 4) }
Modified: trunk/rostests/winetests/user32/input.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/input.c?r... ============================================================================== --- trunk/rostests/winetests/user32/input.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/input.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -1540,7 +1540,7 @@
static void test_ToUnicode(void) { - WCHAR wStr[2]; + WCHAR wStr[4]; BYTE state[256]; const BYTE SC_RETURN = 0x1c, SC_TAB = 0x0f; const BYTE HIGHEST_BIT = 0x80; @@ -1548,8 +1548,9 @@ for(i=0; i<256; i++) state[i]=0;
+ wStr[1] = 0xAA; SetLastError(0xdeadbeef); - ret = ToUnicode(VK_RETURN, SC_RETURN, state, wStr, 2, 0); + ret = ToUnicode(VK_RETURN, SC_RETURN, state, wStr, 4, 0); if (!ret && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) { win_skip("ToUnicode is not implemented\n"); @@ -1558,7 +1559,11 @@
ok(ret == 1, "ToUnicode for Return key didn't return 1 (was %i)\n", ret); if(ret == 1) + { ok(wStr[0]=='\r', "ToUnicode for CTRL + Return was %i (expected 13)\n", wStr[0]); + ok(wStr[1]==0 || broken(wStr[1]!=0) /* nt4 */, + "ToUnicode didn't null-terminate the buffer when there was room.\n"); + } state[VK_CONTROL] |= HIGHEST_BIT; state[VK_LCONTROL] |= HIGHEST_BIT;
Modified: trunk/rostests/winetests/user32/msg.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/msg.c?rev... ============================================================================== --- trunk/rostests/winetests/user32/msg.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/msg.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -8134,12 +8134,6 @@ { }
-static VOID CALLBACK tfunc_crash(HWND hwnd, UINT uMsg, UINT_PTR id, DWORD dwTime) -{ - /* Crash on purpose */ - *(volatile int *)0 = 2; -} - #define TIMER_ID 0x19
static DWORD WINAPI timer_thread_proc(LPVOID x) @@ -8161,7 +8155,6 @@ { struct timer_info info; DWORD id; - MSG msg;
info.hWnd = CreateWindow ("TestWindowClass", NULL, WS_OVERLAPPEDWINDOW , @@ -8182,26 +8175,6 @@ CloseHandle(info.handles[1]);
ok( KillTimer(info.hWnd, TIMER_ID), "KillTimer failed\n"); - - ok(DestroyWindow(info.hWnd), "failed to destroy window\n"); - - /* Test timer callback with crash */ - SetLastError(0xdeadbeef); - info.hWnd = CreateWindowW(testWindowClassW, NULL, - WS_OVERLAPPEDWINDOW , - CW_USEDEFAULT, CW_USEDEFAULT, 300, 300, 0, - NULL, NULL, 0); - if ((!info.hWnd && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) || /* Win9x/Me */ - (!pGetMenuInfo)) /* Win95/NT4 */ - { - win_skip("Test would crash on Win9x/WinMe/NT4\n"); - DestroyWindow(info.hWnd); - return; - } - info.id = SetTimer(info.hWnd, TIMER_ID, 0, tfunc_crash); - ok(info.id, "SetTimer failed\n"); - Sleep(150); - while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg);
ok(DestroyWindow(info.hWnd), "failed to destroy window\n"); } @@ -9516,8 +9489,8 @@
case WAIT_OBJECT_0 + EV_SENDMSG: trace("thread: sending message\n"); - ok( SendNotifyMessageA(info->hwnd, WM_USER, 0, 0), - "SendNotifyMessageA failed error %u\n", GetLastError()); + ret = SendNotifyMessageA(info->hwnd, WM_USER, 0, 0); + ok(ret, "SendNotifyMessageA failed error %u\n", GetLastError()); SetEvent(info->hevent[EV_ACK]); break;
@@ -11236,7 +11209,7 @@ cls.lpszClassName = "MyDialogClass"; cls.hInstance = GetModuleHandle(0); /* need a cast since a dlgproc is used as a wndproc */ - cls.lpfnWndProc = (WNDPROC)test_dlg_proc; + cls.lpfnWndProc = test_dlg_proc; if (!RegisterClass(&cls)) assert(0);
hdlg = CreateDialogParam(0, "CLASS_TEST_DIALOG_2", 0, test_dlg_proc, 0); @@ -11253,6 +11226,52 @@ DestroyWindow(hdlg); flush_sequence();
+ UnregisterClass(cls.lpszClassName, cls.hInstance); +} + +static void test_EndDialog(void) +{ + HWND hparent, hother, hactive, hdlg; + WNDCLASS cls; + + hparent = CreateWindowExA(0, "TestParentClass", "Test parent", + WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_DISABLED, + 100, 100, 200, 200, 0, 0, 0, NULL); + ok (hparent != 0, "Failed to create parent window\n"); + + hother = CreateWindowExA(0, "TestParentClass", "Test parent 2", + WS_OVERLAPPEDWINDOW | WS_VISIBLE, + 100, 100, 200, 200, 0, 0, 0, NULL); + ok (hother != 0, "Failed to create parent window\n"); + + ok(GetClassInfo(0, "#32770", &cls), "GetClassInfo failed\n"); + cls.lpszClassName = "MyDialogClass"; + cls.hInstance = GetModuleHandle(0); + /* need a cast since a dlgproc is used as a wndproc */ + cls.lpfnWndProc = (WNDPROC)test_dlg_proc; + if (!RegisterClass(&cls)) assert(0); + + flush_sequence(); + SetForegroundWindow(hother); + hactive = GetForegroundWindow(); + ok(hother == hactive, "Wrong window has focus (%p != %p)\n", hother, hactive); + + /* create a dialog where the parent is disabled, this parent should still + receive the focus when the dialog exits (even though "normally" a + disabled window should not receive the focus) */ + hdlg = CreateDialogParam(0, "CLASS_TEST_DIALOG_2", hparent, test_dlg_proc, 0); + ok(IsWindow(hdlg), "CreateDialogParam failed\n"); + SetForegroundWindow(hdlg); + hactive = GetForegroundWindow(); + ok(hdlg == hactive, "Wrong window has focus (%p != %p)\n", hdlg, hactive); + EndDialog(hdlg, 0); + hactive = GetForegroundWindow(); + ok(hparent == hactive, "Wrong window has focus (parent != active) (active: %p, parent: %p, dlg: %p, other: %p)\n", hactive, hparent, hdlg, hother); + DestroyWindow(hdlg); + flush_sequence(); + + DestroyWindow( hother ); + DestroyWindow( hparent ); UnregisterClass(cls.lpszClassName, cls.hInstance); }
@@ -13024,6 +13043,7 @@ test_window = CreateWindowEx(0, "TestWindowClass", NULL, WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 200, 200, 0, 0, 0, NULL);
+ flush_events(); flush_sequence();
/* keyup without a keydown */ @@ -13470,6 +13490,234 @@ flush_sequence(); }
+ +static const struct message WmSetFocus_1[] = { + { HCBT_SETFOCUS, hook }, /* child */ + { HCBT_ACTIVATE, hook }, /* parent */ + { WM_QUERYNEWPALETTE, sent|wparam|lparam|parent|optional, 0, 0 }, + { WM_WINDOWPOSCHANGING, sent|parent, 0, SWP_NOSIZE|SWP_NOMOVE }, + { WM_ACTIVATEAPP, sent|wparam|parent, 1 }, + { WM_NCACTIVATE, sent|parent }, + { WM_GETTEXT, sent|defwinproc|parent|optional }, + { WM_GETTEXT, sent|defwinproc|parent|optional }, + { WM_ACTIVATE, sent|wparam|parent, 1 }, + { HCBT_SETFOCUS, hook }, /* parent */ + { WM_SETFOCUS, sent|defwinproc|parent }, + { WM_KILLFOCUS, sent|parent }, + { WM_SETFOCUS, sent }, + { 0 } +}; +static const struct message WmSetFocus_2[] = { + { HCBT_SETFOCUS, hook }, /* parent */ + { WM_KILLFOCUS, sent }, + { WM_SETFOCUS, sent|parent }, + { 0 } +}; +static const struct message WmSetFocus_3[] = { + { HCBT_SETFOCUS, hook }, /* child */ + { 0 } +}; +static const struct message WmSetFocus_4[] = { + { 0 } +}; + +static void test_SetFocus(void) +{ + HWND parent, old_parent, child, old_focus, old_active; + MSG msg; + struct wnd_event wnd_event; + HANDLE hthread; + DWORD ret, tid; + + wnd_event.start_event = CreateEvent(NULL, 0, 0, NULL); + ok(wnd_event.start_event != 0, "CreateEvent error %d\n", GetLastError()); + hthread = CreateThread(NULL, 0, thread_proc, &wnd_event, 0, &tid); + ok(hthread != 0, "CreateThread error %d\n", GetLastError()); + ret = WaitForSingleObject(wnd_event.start_event, INFINITE); + ok(ret == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(wnd_event.start_event); + + parent = CreateWindowEx(0, "TestParentClass", NULL, WS_OVERLAPPEDWINDOW, + 0, 0, 0, 0, 0, 0, 0, NULL); + ok(parent != 0, "failed to create parent window\n"); + child = CreateWindowEx(0, "TestWindowClass", NULL, WS_CHILD, + 0, 0, 0, 0, parent, 0, 0, NULL); + ok(child != 0, "failed to create child window\n"); + + trace("parent %p, child %p, thread window %p\n", parent, child, wnd_event.hwnd); + + SetFocus(0); + SetActiveWindow(0); + + flush_events(); + flush_sequence(); + + ok(GetActiveWindow() == 0, "expected active 0, got %p\n", GetActiveWindow()); + ok(GetFocus() == 0, "expected focus 0, got %p\n", GetFocus()); + + log_all_parent_messages++; + + old_focus = SetFocus(child); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); + ok_sequence(WmSetFocus_1, "SetFocus on a child window", TRUE); + ok(old_focus == parent, "expected old focus %p, got %p\n", parent, old_focus); + ok(GetActiveWindow() == parent, "expected active %p, got %p\n", parent, GetActiveWindow()); + ok(GetFocus() == child, "expected focus %p, got %p\n", child, GetFocus()); + + old_focus = SetFocus(parent); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); + ok_sequence(WmSetFocus_2, "SetFocus on a parent window", FALSE); + ok(old_focus == child, "expected old focus %p, got %p\n", child, old_focus); + ok(GetActiveWindow() == parent, "expected active %p, got %p\n", parent, GetActiveWindow()); + ok(GetFocus() == parent, "expected focus %p, got %p\n", parent, GetFocus()); + + SetLastError(0xdeadbeef); + old_focus = SetFocus((HWND)0xdeadbeef); + ok(GetLastError() == ERROR_INVALID_WINDOW_HANDLE || broken(GetLastError() == 0xdeadbeef), + "expected ERROR_INVALID_WINDOW_HANDLE, got %d\n", GetLastError()); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); + ok_sequence(WmEmptySeq, "SetFocus on an invalid window", FALSE); + ok(old_focus == 0, "expected old focus 0, got %p\n", old_focus); + ok(GetActiveWindow() == parent, "expected active %p, got %p\n", parent, GetActiveWindow()); + ok(GetFocus() == parent, "expected focus %p, got %p\n", parent, GetFocus()); + + SetLastError(0xdeadbeef); + old_focus = SetFocus(GetDesktopWindow()); + ok(GetLastError() == ERROR_ACCESS_DENIED /* Vista+ */ || + broken(GetLastError() == 0xdeadbeef), "expected ERROR_ACCESS_DENIED, got %d\n", GetLastError()); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); + ok_sequence(WmEmptySeq, "SetFocus on a desktop window", TRUE); + ok(old_focus == 0, "expected old focus 0, got %p\n", old_focus); + ok(GetActiveWindow() == parent, "expected active %p, got %p\n", parent, GetActiveWindow()); + ok(GetFocus() == parent, "expected focus %p, got %p\n", parent, GetFocus()); + + SetLastError(0xdeadbeef); + old_focus = SetFocus(wnd_event.hwnd); + ok(GetLastError() == ERROR_ACCESS_DENIED /* Vista+ */ || + broken(GetLastError() == 0xdeadbeef), "expected ERROR_ACCESS_DENIED, got %d\n", GetLastError()); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); + ok_sequence(WmEmptySeq, "SetFocus on another thread window", TRUE); + ok(old_focus == 0, "expected old focus 0, got %p\n", old_focus); + ok(GetActiveWindow() == parent, "expected active %p, got %p\n", parent, GetActiveWindow()); + ok(GetFocus() == parent, "expected focus %p, got %p\n", parent, GetFocus()); + + SetLastError(0xdeadbeef); + old_active = SetActiveWindow((HWND)0xdeadbeef); + ok(GetLastError() == ERROR_INVALID_WINDOW_HANDLE || broken(GetLastError() == 0xdeadbeef), + "expected ERROR_INVALID_WINDOW_HANDLE, got %d\n", GetLastError()); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); + ok_sequence(WmEmptySeq, "SetActiveWindow on an invalid window", FALSE); + ok(old_active == 0, "expected old focus 0, got %p\n", old_active); + ok(GetActiveWindow() == parent, "expected active %p, got %p\n", parent, GetActiveWindow()); + ok(GetFocus() == parent, "expected focus %p, got %p\n", parent, GetFocus()); + + SetLastError(0xdeadbeef); + old_active = SetActiveWindow(GetDesktopWindow()); +todo_wine + ok(GetLastError() == 0xdeadbeef, "expected 0xdeadbeef, got %d\n", GetLastError()); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); + ok_sequence(WmEmptySeq, "SetActiveWindow on a desktop window", TRUE); + ok(old_active == 0, "expected old focus 0, got %p\n", old_focus); + ok(GetActiveWindow() == parent, "expected active %p, got %p\n", parent, GetActiveWindow()); + ok(GetFocus() == parent, "expected focus %p, got %p\n", parent, GetFocus()); + + SetLastError(0xdeadbeef); + old_active = SetActiveWindow(wnd_event.hwnd); +todo_wine + ok(GetLastError() == 0xdeadbeef, "expected 0xdeadbeef, got %d\n", GetLastError()); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); + ok_sequence(WmEmptySeq, "SetActiveWindow on another thread window", TRUE); + ok(old_active == 0, "expected old focus 0, got %p\n", old_active); + ok(GetActiveWindow() == parent, "expected active %p, got %p\n", parent, GetActiveWindow()); + ok(GetFocus() == parent, "expected focus %p, got %p\n", parent, GetFocus()); + + SetLastError(0xdeadbeef); + ret = AttachThreadInput(GetCurrentThreadId(), tid, TRUE); + ok(ret, "AttachThreadInput error %d\n", GetLastError()); + +todo_wine { + ok(GetActiveWindow() == parent, "expected active %p, got %p\n", parent, GetActiveWindow()); + ok(GetFocus() == parent, "expected focus %p, got %p\n", parent, GetFocus()); +} + flush_events(); + flush_sequence(); + + old_focus = SetFocus(wnd_event.hwnd); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); + ok(old_focus == wnd_event.hwnd, "expected old focus %p, got %p\n", wnd_event.hwnd, old_focus); + ok(GetActiveWindow() == wnd_event.hwnd, "expected active %p, got %p\n", wnd_event.hwnd, GetActiveWindow()); + ok(GetFocus() == wnd_event.hwnd, "expected focus %p, got %p\n", wnd_event.hwnd, GetFocus()); + + old_focus = SetFocus(parent); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); + ok(old_focus == parent, "expected old focus %p, got %p\n", parent, old_focus); + ok(GetActiveWindow() == parent, "expected active %p, got %p\n", parent, GetActiveWindow()); + ok(GetFocus() == parent, "expected focus %p, got %p\n", parent, GetFocus()); + + flush_events(); + flush_sequence(); + + old_active = SetActiveWindow(wnd_event.hwnd); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); + ok(old_active == parent, "expected old focus %p, got %p\n", parent, old_active); + ok(GetActiveWindow() == wnd_event.hwnd, "expected active %p, got %p\n", wnd_event.hwnd, GetActiveWindow()); + ok(GetFocus() == wnd_event.hwnd, "expected focus %p, got %p\n", wnd_event.hwnd, GetFocus()); + + SetLastError(0xdeadbeef); + ret = AttachThreadInput(GetCurrentThreadId(), tid, FALSE); + ok(ret, "AttachThreadInput error %d\n", GetLastError()); + + ok(GetActiveWindow() == 0, "expected active 0, got %p\n", GetActiveWindow()); + ok(GetFocus() == 0, "expected focus 0, got %p\n", GetFocus()); + + old_parent = SetParent(child, GetDesktopWindow()); + ok(old_parent == parent, "expected old parent %p, got %p\n", parent, old_parent); + + ok(GetActiveWindow() == 0, "expected active 0, got %p\n", GetActiveWindow()); + ok(GetFocus() == 0, "expected focus 0, got %p\n", GetFocus()); + + old_focus = SetFocus(parent); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); + ok(old_focus == parent, "expected old focus %p, got %p\n", parent, old_focus); + ok(GetActiveWindow() == parent, "expected active %p, got %p\n", parent, GetActiveWindow()); + ok(GetFocus() == parent, "expected focus %p, got %p\n", parent, GetFocus()); + + flush_events(); + flush_sequence(); + + SetLastError(0xdeadbeef); + old_focus = SetFocus(child); +todo_wine + ok(GetLastError() == ERROR_INVALID_PARAMETER /* Vista+ */ || + broken(GetLastError() == 0) /* XP */ || + broken(GetLastError() == 0xdeadbeef), "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); + ok_sequence(WmSetFocus_3, "SetFocus on a child window", TRUE); + ok(old_focus == 0, "expected old focus 0, got %p\n", old_focus); + ok(GetActiveWindow() == parent, "expected active %p, got %p\n", parent, GetActiveWindow()); + ok(GetFocus() == parent, "expected focus %p, got %p\n", parent, GetFocus()); + + SetLastError(0xdeadbeef); + old_active = SetActiveWindow(child); + ok(GetLastError() == 0xdeadbeef, "expected 0xdeadbeef, got %d\n", GetLastError()); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) DispatchMessage(&msg); + ok_sequence(WmEmptySeq, "SetActiveWindow on a child window", FALSE); + ok(old_active == parent, "expected old active %p, got %p\n", parent, old_active); + ok(GetActiveWindow() == parent, "expected active %p, got %p\n", parent, GetActiveWindow()); + ok(GetFocus() == parent, "expected focus %p, got %p\n", parent, GetFocus()); + + log_all_parent_messages--; + + DestroyWindow(child); + DestroyWindow(parent); + + ret = PostMessage(wnd_event.hwnd, WM_QUIT, 0, 0); + ok(ret, "PostMessage(WM_QUIT) error %d\n", GetLastError()); + ret = WaitForSingleObject(hthread, INFINITE); + ok(ret == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(hthread); +} + START_TEST(msg) { char **test_argv; @@ -13533,6 +13781,7 @@ hEvent_hook = 0; #endif
+ test_SetFocus(); test_SetParent(); test_PostMessage(); test_ShowWindow(); @@ -13572,6 +13821,7 @@ test_SetWindowRgn(); test_sys_menu(); test_dialog_messages(); + test_EndDialog(); test_nullCallback(); test_dbcs_wm_char(); test_menu_messages();
Modified: trunk/rostests/winetests/user32/resource.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/resource.... ============================================================================== --- trunk/rostests/winetests/user32/resource.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/resource.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -90,7 +90,7 @@ {sizeof str, sizeof str - 1}, {sizeof str - 1, sizeof str - 2}}; unsigned int i; - int ret; + int ret, ret2;
assert (sizeof str < sizeof buf); for (i = 0; i < sizeof tests / sizeof tests[0]; i++) { @@ -110,17 +110,17 @@
ret = LoadStringA(hInst, 1, buf, sizeof(buf) ); ok( ret > 0, "LoadString failed: ret %d err %d\n", ret, GetLastError()); - ok( LoadStringA( hInst, MAKELONG( 1, 0x8000 ), buf, sizeof(buf)) == ret, - "LoadString failed: ret %d err %d\n", ret, GetLastError()); - ok( LoadStringA( hInst, MAKELONG( 1, 0xffff ), buf, sizeof(buf)) == ret, - "LoadString failed: ret %d err %d\n", ret, GetLastError()); + ret2 = LoadStringA( hInst, MAKELONG( 1, 0x8000 ), buf, sizeof(buf)); + ok( ret2 == ret, "LoadString failed: ret %d err %d\n", ret, GetLastError()); + ret2 = LoadStringA( hInst, MAKELONG( 1, 0xffff ), buf, sizeof(buf)); + ok( ret2 == ret, "LoadString failed: ret %d err %d\n", ret, GetLastError());
ret = LoadStringA(hInst, 65534, buf, sizeof(buf) ); ok( ret > 0, "LoadString failed: ret %d err %d\n", ret, GetLastError()); - ok( LoadStringA( hInst, MAKELONG( 65534, 0x8000 ), buf, sizeof(buf)) == ret, - "LoadString failed: ret %d err %d\n", ret, GetLastError()); - ok( LoadStringA( hInst, MAKELONG( 65534, 0xffff ), buf, sizeof(buf)) == ret, - "LoadString failed: ret %d err %d\n", ret, GetLastError()); + ret2 = LoadStringA( hInst, MAKELONG( 65534, 0x8000 ), buf, sizeof(buf)); + ok( ret2 == ret, "LoadString failed: ret %d err %d\n", ret, GetLastError()); + ret2 = LoadStringA( hInst, MAKELONG( 65534, 0xffff ), buf, sizeof(buf)); + ok( ret2 == ret, "LoadString failed: ret %d err %d\n", ret, GetLastError());
ret = LoadStringA(hInst, 0, buf, 0); ok( ret == -1 || broken(ret == 0),
Modified: trunk/rostests/winetests/user32/resource.rc URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/resource.... ============================================================================== --- trunk/rostests/winetests/user32/resource.rc [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/resource.rc [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -45,6 +45,16 @@ 65534 "Test high id" }
+/* Test dialog with a mixed style WS_CHILD | WS_POPUP control */ +TEST_DLG_CHILD_POPUP DIALOG 0, 0, 60, 30 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Test dialog with mixed style controls" +FONT 8, "MS Shell Dlg" +{ + CONTROL "bump7",7,"static",WS_CHILD|WS_POPUP|WS_BORDER,0,0,40,10,WS_EX_TRANSPARENT + CONTROL "bump8",8,"static",WS_POPUP,0,10,40,10,WS_EX_TRANSPARENT +} + TEST_DIALOG DIALOG 0, 0, 60, 30 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE CAPTION "Test dialog" @@ -87,6 +97,14 @@ FONT 8, "MS Shell Dlg" { EDITTEXT 200,4,4,50,14 +} + +FOCUS_TEST_DIALOG_2 DIALOG 0, 0, 60, 30 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Test dialog" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Hello world", 200,4,4,50,14 }
IDD_DIALOG DIALOG 0, 0, 186, 95
Modified: trunk/rostests/winetests/user32/scroll.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/scroll.c?... ============================================================================== --- trunk/rostests/winetests/user32/scroll.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/scroll.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -302,13 +302,10 @@ if (bThemeActive || style != WS_HSCROLL) todo_wine ok( (winstyle & (WS_HSCROLL|WS_VSCROLL)) == ( style | WS_VSCROLL), - "unexpected style change %8lx expected %8lx\n", - (winstyle & (WS_HSCROLL|WS_VSCROLL)), style | WS_VSCROLL); + "unexpected style change %08x/%08x\n", winstyle, style); else - ok( (winstyle & (WS_HSCROLL|WS_VSCROLL)) == style || - broken((winstyle & (WS_HSCROLL|WS_VSCROLL)) == (WS_HSCROLL|WS_VSCROLL)), /* Win 9x/ME */ - "unexpected style change %8lx expected %8x\n", - (winstyle & (WS_HSCROLL|WS_VSCROLL)), style); + ok( (winstyle & (WS_HSCROLL|WS_VSCROLL)) == style, + "unexpected style change %08x/%08x\n", winstyle, style); } /* do the test again with H and V reversed. * Start with a clean window */ @@ -341,13 +338,10 @@ if (bThemeActive || style != WS_VSCROLL) todo_wine ok( (winstyle & (WS_HSCROLL|WS_VSCROLL)) == ( style | WS_HSCROLL), - "unexpected style change %8lx expected %8lx\n", - (winstyle & (WS_HSCROLL|WS_VSCROLL)), style | WS_HSCROLL); + "unexpected style change %08x/%08x\n", winstyle, style); else - ok( (winstyle & (WS_HSCROLL|WS_VSCROLL)) == style || - broken((winstyle & (WS_HSCROLL|WS_VSCROLL)) == (WS_HSCROLL|WS_VSCROLL)), /* Win 9x/ME */ - "unexpected style change %8lx expected %8x\n", - (winstyle & (WS_HSCROLL|WS_VSCROLL)), style); + ok( (winstyle & (WS_HSCROLL|WS_VSCROLL)) == style, + "unexpected style change %08x/%08x\n", winstyle, style); } /* Slightly change the test to use SetScrollInfo * Start with a clean window */
Modified: trunk/rostests/winetests/user32/static.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/static.c?... ============================================================================== --- trunk/rostests/winetests/user32/static.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/static.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -17,7 +17,6 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#include <assert.h> #include <stdarg.h> #include <stdio.h>
Modified: trunk/rostests/winetests/user32/sysparams.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/sysparams... ============================================================================== --- trunk/rostests/winetests/user32/sysparams.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/sysparams.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -25,6 +25,8 @@ #undef _WIN32_WINNT #define _WIN32_WINNT 0x0600 /* For SPI_GETMOUSEHOVERWIDTH and more */ //#define _WIN32_IE 0x0700 +#undef WINVER +#define WINVER 0x0600 /* For COLOR_MENUBAR, NONCLIENTMETRICS with padding */
#include "wine/test.h" #include "windef.h" @@ -682,7 +684,7 @@ INT frame; NONCLIENTMETRICSA ncm;
- ncm.cbSize = sizeof( ncm); + ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICS, iPaddedBorderWidth); rc=SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0); ok(rc!=0,"SystemParametersInfoA: rc=%d err=%d\n",rc,GetLastError()); if( usesetborder) { @@ -727,11 +729,11 @@ { BOOL rc; UINT old_border; - NONCLIENTMETRICSA ncmsave; + NONCLIENTMETRICS ncmsave; INT CaptionWidth, PaddedBorderWidth;
- ncmsave.cbSize = sizeof( ncmsave); + ncmsave.cbSize = FIELD_OFFSET(NONCLIENTMETRICS, iPaddedBorderWidth); rc=SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &ncmsave, 0); if( !rc) { win_skip("SPI_GETNONCLIENTMETRICS is not available\n"); @@ -1415,10 +1417,10 @@ NONCLIENTMETRICSA Ncmcur; NONCLIENTMETRICSA Ncmstart;
- Ncmorig.cbSize = sizeof(NONCLIENTMETRICSA); - Ncmnew.cbSize = sizeof(NONCLIENTMETRICSA); - Ncmcur.cbSize = sizeof(NONCLIENTMETRICSA); - Ncmstart.cbSize = sizeof(NONCLIENTMETRICSA); + Ncmorig.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth); + Ncmnew.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth); + Ncmcur.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth); + Ncmstart.cbSize = FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth);
trace("testing SPI_{GET,SET}NONCLIENTMETRICS\n"); change_counter = 0; @@ -2574,8 +2576,28 @@ NONCLIENTMETRICS ncm; SIZE screen;
+ assert(sizeof(ncm) == 344); + + ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICS, iPaddedBorderWidth); + rc = SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0); + ok(rc, "SystemParametersInfoA failed\n"); + + ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICS, iPaddedBorderWidth) - 1; + rc = SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0); + ok(!rc, "SystemParametersInfoA should fail\n"); + + ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICS, iPaddedBorderWidth) + 1; + SetLastError(0xdeadbeef); + rc = SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0); + ok(!rc, "SystemParametersInfoA should fail\n"); + + ncm.cbSize = sizeof(ncm); /* Vista added padding */ + SetLastError(0xdeadbeef); + rc = SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0); + ok(rc || broken(!rc) /* before Vista */, "SystemParametersInfoA failed\n"); + minim.cbSize = sizeof( minim); - ncm.cbSize = sizeof( ncm); + ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICS, iPaddedBorderWidth); SystemParametersInfo( SPI_GETMINIMIZEDMETRICS, 0, &minim, 0); rc = SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &ncm, 0); if( !rc) {
Modified: trunk/rostests/winetests/user32/win.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/win.c?rev... ============================================================================== --- trunk/rostests/winetests/user32/win.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/win.c [iso-8859-1] Thu Jan 26 15:55:16 2012 @@ -2513,7 +2513,7 @@
static void test_SetFocus(HWND hwnd) { - HWND child, child2; + HWND child, child2, ret; WNDPROC old_wnd_proc;
/* check if we can set focus to non-visible windows */ @@ -2588,8 +2588,31 @@ ok( GetActiveWindow() == hwnd, "parent window %p should be active\n", hwnd); todo_wine ok( GetFocus() == child, "Focus should be on child %p, not %p\n", child, GetFocus() ); - SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)old_wnd_proc); + + SetFocus( hwnd ); + SetParent( child, GetDesktopWindow()); + SetParent( child2, child ); + ok( GetActiveWindow() == hwnd, "parent window %p should be active\n", hwnd); + ok( GetFocus() == hwnd, "Focus should be on parent %p\n", hwnd ); + ret = SetFocus( child2 ); + ok( ret == 0, "SetFocus %p should fail\n", child2); + ok( GetActiveWindow() == hwnd, "parent window %p should be active\n", hwnd); + ok( GetFocus() == hwnd, "Focus should be on parent %p\n", hwnd ); + ret = SetFocus( child ); + ok( ret == 0, "SetFocus %p should fail\n", child); + ok( GetActiveWindow() == hwnd, "parent window %p should be active\n", hwnd); + ok( GetFocus() == hwnd, "Focus should be on parent %p\n", hwnd ); + SetWindowLongW( child, GWL_STYLE, WS_POPUP|WS_CHILD ); + SetFocus( child2 ); + ok( GetActiveWindow() == child, "child window %p should be active\n", child); + ok( GetFocus() == child2, "Focus should be on child2 %p\n", child2 ); + SetFocus( hwnd ); + ok( GetActiveWindow() == hwnd, "parent window %p should be active\n", hwnd); + ok( GetFocus() == hwnd, "Focus should be on parent %p\n", hwnd ); + SetFocus( child ); + ok( GetActiveWindow() == child, "child window %p should be active\n", child); + ok( GetFocus() == child, "Focus should be on child %p\n", child );
DestroyWindow( child2 ); DestroyWindow( child ); @@ -3642,7 +3665,7 @@ ok(!(lpcs->dwExStyle & WS_EX_WINDOWEDGE), "Window shouldn't have WS_EX_WINDOWEDGE style\n");
ok((lpss->styleOld & ~WS_EX_WINDOWEDGE) == (lpcs->dwExStyle & ~WS_EX_WINDOWEDGE), - "Ex style (0x%08lx) should match what the caller passed to CreateWindowEx (0x%08lx)\n", + "Ex style (0x%08x) should match what the caller passed to CreateWindowEx (0x%08x)\n", (lpss->styleOld & ~WS_EX_WINDOWEDGE), (lpcs->dwExStyle & ~WS_EX_WINDOWEDGE));
ok(lpss->styleNew == lpcs->style, @@ -3673,6 +3696,7 @@ };
atomStyleCheckClass = RegisterClass(&wc); + assert(atomStyleCheckClass); }
static void check_window_style(DWORD dwStyleIn, DWORD dwExStyleIn, DWORD dwStyleOut, DWORD dwExStyleOut) @@ -3700,28 +3724,42 @@
dwActualStyle = GetWindowLong(hwnd, GWL_STYLE); dwActualExStyle = GetWindowLong(hwnd, GWL_EXSTYLE); - ok((dwActualStyle == dwStyleOut) && (dwActualExStyle == dwExStyleOut), - "Style (0x%08x) should really be 0x%08x and/or Ex style (0x%08x) should really be 0x%08x\n", - dwActualStyle, dwStyleOut, dwActualExStyle, dwExStyleOut); + ok(dwActualStyle == dwStyleOut, "expected style %#x, got %#x\n", dwStyleOut, dwActualStyle); + ok(dwActualExStyle == dwExStyleOut, "expected ex_style %#x, got %#x\n", dwExStyleOut, dwActualExStyle);
/* try setting the styles explicitly */ SetWindowLong( hwnd, GWL_EXSTYLE, dwExStyleIn ); + dwActualStyle = GetWindowLong(hwnd, GWL_STYLE); + dwActualExStyle = GetWindowLong(hwnd, GWL_EXSTYLE); + /* WS_EX_WINDOWEDGE can't always be changed */ + if (dwExStyleIn & WS_EX_DLGMODALFRAME) + dwExStyleOut = dwExStyleIn | WS_EX_WINDOWEDGE; + else if ((dwActualStyle & (WS_DLGFRAME | WS_THICKFRAME)) && !(dwExStyleIn & WS_EX_STATICEDGE)) + dwExStyleOut = dwExStyleIn | WS_EX_WINDOWEDGE; + else + dwExStyleOut = dwExStyleIn & ~WS_EX_WINDOWEDGE; + ok(dwActualStyle == dwStyleOut, "expected style %#x, got %#x\n", dwStyleOut, dwActualStyle); + ok(dwActualExStyle == dwExStyleOut, "expected ex_style %#x, got %#x\n", dwExStyleOut, dwActualExStyle); + SetWindowLong( hwnd, GWL_STYLE, dwStyleIn ); dwActualStyle = GetWindowLong(hwnd, GWL_STYLE); dwActualExStyle = GetWindowLong(hwnd, GWL_EXSTYLE); /* WS_CLIPSIBLINGS can't be reset on top-level windows */ - if (dwStyleIn & WS_CHILD) dwStyleOut = dwStyleIn; + if ((dwStyleIn & (WS_CHILD|WS_POPUP)) == WS_CHILD) dwStyleOut = dwStyleIn; else dwStyleOut = dwStyleIn | WS_CLIPSIBLINGS; /* WS_EX_WINDOWEDGE can't always be changed */ - if ((dwExStyleIn & WS_EX_DLGMODALFRAME) || (dwStyleIn & WS_THICKFRAME)) + if (dwExStyleIn & WS_EX_DLGMODALFRAME) dwExStyleOut = dwExStyleIn | WS_EX_WINDOWEDGE; - else if (dwStyleIn & (WS_CHILD | WS_POPUP)) + else if ((dwActualStyle & (WS_DLGFRAME | WS_THICKFRAME)) && !(dwExStyleIn & WS_EX_STATICEDGE)) + dwExStyleOut = dwExStyleIn | WS_EX_WINDOWEDGE; + else dwExStyleOut = dwExStyleIn & ~WS_EX_WINDOWEDGE; + ok(dwActualStyle == dwStyleOut, "expected style %#x, got %#x\n", dwStyleOut, dwActualStyle); + /* FIXME: Remove the condition below once Wine is fixed */ + if (dwActualExStyle != dwExStyleOut) + todo_wine ok(dwActualExStyle == dwExStyleOut, "expected ex_style %#x, got %#x\n", dwExStyleOut, dwActualExStyle); else - dwExStyleOut = dwExStyleIn; - ok((dwActualStyle == dwStyleOut) && (dwActualExStyle == dwExStyleOut), - "%08x/%08x: Style (0x%08x) should really be 0x%08x and/or Ex style (0x%08x) should really be 0x%08x\n", - dwStyleIn, dwExStyleIn, dwActualStyle, dwStyleOut, dwActualExStyle, dwExStyleOut); + ok(dwActualExStyle == dwExStyleOut, "expected ex_style %#x, got %#x\n", dwExStyleOut, dwActualExStyle);
DestroyWindow(hwnd); if (hwndParent) DestroyWindow(hwndParent); @@ -3733,14 +3771,36 @@ register_style_check_class();
check_window_style(0, 0, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_WINDOWEDGE); + check_window_style(WS_DLGFRAME, 0, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_WINDOWEDGE); + check_window_style(WS_THICKFRAME, 0, WS_THICKFRAME|WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_WINDOWEDGE); + check_window_style(WS_DLGFRAME, WS_EX_STATICEDGE, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_WINDOWEDGE|WS_EX_STATICEDGE); + check_window_style(WS_THICKFRAME, WS_EX_STATICEDGE, WS_THICKFRAME|WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_WINDOWEDGE|WS_EX_STATICEDGE); check_window_style(WS_OVERLAPPEDWINDOW, 0, WS_CLIPSIBLINGS|WS_OVERLAPPEDWINDOW, WS_EX_WINDOWEDGE); check_window_style(WS_CHILD, 0, WS_CHILD, 0); + check_window_style(WS_CHILD|WS_DLGFRAME, 0, WS_CHILD|WS_DLGFRAME, WS_EX_WINDOWEDGE); + check_window_style(WS_CHILD|WS_THICKFRAME, 0, WS_CHILD|WS_THICKFRAME, WS_EX_WINDOWEDGE); + check_window_style(WS_CHILD|WS_DLGFRAME, WS_EX_STATICEDGE, WS_CHILD|WS_DLGFRAME, WS_EX_STATICEDGE); + check_window_style(WS_CHILD|WS_THICKFRAME, WS_EX_STATICEDGE, WS_CHILD|WS_THICKFRAME, WS_EX_STATICEDGE); + check_window_style(WS_CHILD|WS_CAPTION, 0, WS_CHILD|WS_CAPTION, WS_EX_WINDOWEDGE); + check_window_style(WS_CHILD|WS_CAPTION|WS_SYSMENU, 0, WS_CHILD|WS_CAPTION|WS_SYSMENU, WS_EX_WINDOWEDGE); + check_window_style(WS_CHILD, WS_EX_WINDOWEDGE, WS_CHILD, 0); + check_window_style(WS_CHILD, WS_EX_DLGMODALFRAME, WS_CHILD, WS_EX_WINDOWEDGE|WS_EX_DLGMODALFRAME); + check_window_style(WS_CHILD, WS_EX_DLGMODALFRAME|WS_EX_STATICEDGE, WS_CHILD, WS_EX_STATICEDGE|WS_EX_WINDOWEDGE|WS_EX_DLGMODALFRAME); + check_window_style(WS_CHILD|WS_POPUP, 0, WS_CHILD|WS_POPUP|WS_CLIPSIBLINGS, 0); + check_window_style(WS_CHILD|WS_POPUP|WS_DLGFRAME, 0, WS_CHILD|WS_POPUP|WS_DLGFRAME|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE); + check_window_style(WS_CHILD|WS_POPUP|WS_THICKFRAME, 0, WS_CHILD|WS_POPUP|WS_THICKFRAME|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE); + check_window_style(WS_CHILD|WS_POPUP|WS_DLGFRAME, WS_EX_STATICEDGE, WS_CHILD|WS_POPUP|WS_DLGFRAME|WS_CLIPSIBLINGS, WS_EX_STATICEDGE); + check_window_style(WS_CHILD|WS_POPUP|WS_THICKFRAME, WS_EX_STATICEDGE, WS_CHILD|WS_POPUP|WS_THICKFRAME|WS_CLIPSIBLINGS, WS_EX_STATICEDGE); + check_window_style(WS_CHILD|WS_POPUP, WS_EX_APPWINDOW, WS_CHILD|WS_POPUP|WS_CLIPSIBLINGS, WS_EX_APPWINDOW); + check_window_style(WS_CHILD|WS_POPUP, WS_EX_WINDOWEDGE, WS_CHILD|WS_POPUP|WS_CLIPSIBLINGS, 0); check_window_style(WS_CHILD, WS_EX_WINDOWEDGE, WS_CHILD, 0); check_window_style(0, WS_EX_TOOLWINDOW, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_WINDOWEDGE|WS_EX_TOOLWINDOW); check_window_style(WS_POPUP, 0, WS_POPUP|WS_CLIPSIBLINGS, 0); check_window_style(WS_POPUP, WS_EX_WINDOWEDGE, WS_POPUP|WS_CLIPSIBLINGS, 0); - check_window_style(WS_CHILD, WS_EX_DLGMODALFRAME, WS_CHILD, WS_EX_WINDOWEDGE|WS_EX_DLGMODALFRAME); - check_window_style(WS_CHILD, WS_EX_DLGMODALFRAME|WS_EX_STATICEDGE, WS_CHILD, WS_EX_STATICEDGE|WS_EX_WINDOWEDGE|WS_EX_DLGMODALFRAME); + check_window_style(WS_POPUP|WS_DLGFRAME, 0, WS_POPUP|WS_DLGFRAME|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE); + check_window_style(WS_POPUP|WS_THICKFRAME, 0, WS_POPUP|WS_THICKFRAME|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE); + check_window_style(WS_POPUP|WS_DLGFRAME, WS_EX_STATICEDGE, WS_POPUP|WS_DLGFRAME|WS_CLIPSIBLINGS, WS_EX_STATICEDGE); + check_window_style(WS_POPUP|WS_THICKFRAME, WS_EX_STATICEDGE, WS_POPUP|WS_THICKFRAME|WS_CLIPSIBLINGS, WS_EX_STATICEDGE); check_window_style(WS_CAPTION, WS_EX_STATICEDGE, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_STATICEDGE|WS_EX_WINDOWEDGE); check_window_style(0, WS_EX_APPWINDOW, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_APPWINDOW|WS_EX_WINDOWEDGE);
@@ -3750,6 +3810,175 @@ check_window_style(0, WS_EX_LAYERED|WS_EX_TRANSPARENT, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_LAYERED|WS_EX_TRANSPARENT|WS_EX_WINDOWEDGE); check_window_style(0, WS_EX_LAYERED|WS_EX_TRANSPARENT|WS_EX_TOOLWINDOW, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_LAYERED|WS_EX_TRANSPARENT|WS_EX_TOOLWINDOW|WS_EX_WINDOWEDGE); + } +} + +static INT_PTR WINAPI empty_dlg_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) +{ + return 0; +} + +static void check_dialog_style(DWORD style_in, DWORD ex_style_in, DWORD style_out, DWORD ex_style_out) +{ + struct + { + DLGTEMPLATE dt; + WORD menu_name; + WORD class_id; + WORD class_atom; + WCHAR caption[1]; + } dlg_data; + DWORD style, ex_style; + HWND hwnd, parent = 0; + + if (style_in & WS_CHILD) + parent = CreateWindowEx(0, "static", NULL, WS_OVERLAPPEDWINDOW, + 0, 0, 0, 0, NULL, NULL, NULL, NULL); + + dlg_data.dt.style = style_in; + dlg_data.dt.dwExtendedStyle = ex_style_in; + dlg_data.dt.cdit = 0; + dlg_data.dt.x = 0; + dlg_data.dt.y = 0; + dlg_data.dt.cx = 100; + dlg_data.dt.cy = 100; + dlg_data.menu_name = 0; + dlg_data.class_id = 0; + dlg_data.class_atom = 0; + dlg_data.caption[0] = 0; + + hwnd = CreateDialogIndirectParam(GetModuleHandle(0), &dlg_data.dt, parent, empty_dlg_proc, 0); + ok(hwnd != 0, "dialog creation failed, style %#x, exstyle %#x\n", style_in, ex_style_in); + + flush_events( TRUE ); + + style = GetWindowLong(hwnd, GWL_STYLE); + ex_style = GetWindowLong(hwnd, GWL_EXSTYLE); + ok(style == (style_out | DS_3DLOOK), "expected style %#x, got %#x\n", style_out | DS_3DLOOK, style); + ok(ex_style == ex_style_out, "expected ex_style %#x, got %#x\n", ex_style_out, ex_style); + + /* try setting the styles explicitly */ + SetWindowLong(hwnd, GWL_EXSTYLE, ex_style_in); + style = GetWindowLong(hwnd, GWL_STYLE); + ex_style = GetWindowLong(hwnd, GWL_EXSTYLE); + ok(style == (style_out | DS_3DLOOK), "expected style %#x, got %#x\n", style_out|DS_3DLOOK, style); + /* WS_EX_WINDOWEDGE can't always be changed */ + if (ex_style_in & WS_EX_DLGMODALFRAME) + ex_style_out = ex_style_in | WS_EX_WINDOWEDGE; + else if ((style & (WS_DLGFRAME | WS_THICKFRAME)) && !(ex_style_in & WS_EX_STATICEDGE)) + ex_style_out = ex_style_in | WS_EX_WINDOWEDGE; + else + ex_style_out = ex_style_in & ~WS_EX_WINDOWEDGE; + ok(ex_style == ex_style_out, "expected ex_style %#x, got %#x\n", ex_style_out, ex_style); + + SetWindowLong(hwnd, GWL_STYLE, style_in); + style = GetWindowLong(hwnd, GWL_STYLE); + ex_style = GetWindowLong(hwnd, GWL_EXSTYLE); + /* WS_CLIPSIBLINGS can't be reset on top-level windows */ + if ((style_in & (WS_CHILD | WS_POPUP)) == WS_CHILD) style_out = style_in; + else style_out = style_in | WS_CLIPSIBLINGS; + ok(style == style_out, "expected style %#x, got %#x\n", style_out, style); + /* WS_EX_WINDOWEDGE can't always be changed */ + if (ex_style_in & WS_EX_DLGMODALFRAME) + ex_style_out = ex_style_in | WS_EX_WINDOWEDGE; + else if ((style & (WS_DLGFRAME | WS_THICKFRAME)) && !(ex_style_in & WS_EX_STATICEDGE)) + ex_style_out = ex_style_in | WS_EX_WINDOWEDGE; + else + ex_style_out = ex_style_in & ~WS_EX_WINDOWEDGE; + /* FIXME: Remove the condition below once Wine is fixed */ + if (ex_style != ex_style_out) + todo_wine ok(ex_style == ex_style_out, "expected ex_style %#x, got %#x\n", ex_style_out, ex_style); + else + ok(ex_style == ex_style_out, "expected ex_style %#x, got %#x\n", ex_style_out, ex_style); + + DestroyWindow(hwnd); + DestroyWindow(parent); +} + +static void test_dialog_styles(void) +{ + check_dialog_style(0, 0, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_DLGFRAME, 0, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_THICKFRAME, 0, WS_THICKFRAME|WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_DLGFRAME, WS_EX_STATICEDGE, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_WINDOWEDGE|WS_EX_STATICEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_THICKFRAME, WS_EX_STATICEDGE, WS_THICKFRAME|WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_WINDOWEDGE|WS_EX_STATICEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(DS_CONTROL, 0, WS_CLIPSIBLINGS|WS_CAPTION|DS_CONTROL, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_CAPTION, 0, WS_CAPTION|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_BORDER, 0, WS_CAPTION|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_DLGFRAME, 0, WS_CAPTION|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_BORDER|DS_CONTROL, 0, WS_CAPTION|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_DLGFRAME|DS_CONTROL, 0, WS_CAPTION|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_CAPTION|WS_SYSMENU, 0, WS_CAPTION|WS_SYSMENU|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_SYSMENU, 0, WS_CAPTION|WS_SYSMENU|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_CAPTION|DS_CONTROL, 0, WS_CAPTION|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_SYSMENU|DS_CONTROL, 0, WS_CAPTION|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_CAPTION|WS_SYSMENU|DS_CONTROL, 0, WS_CAPTION|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_OVERLAPPEDWINDOW, 0, WS_CLIPSIBLINGS|WS_OVERLAPPEDWINDOW, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_CHILD, 0, WS_CHILD, 0); + check_dialog_style(WS_CHILD|WS_DLGFRAME, 0, WS_CHILD|WS_DLGFRAME, WS_EX_WINDOWEDGE); + check_dialog_style(WS_CHILD|WS_THICKFRAME, 0, WS_CHILD|WS_THICKFRAME, WS_EX_WINDOWEDGE); + check_dialog_style(WS_CHILD|WS_DLGFRAME, WS_EX_STATICEDGE, WS_CHILD|WS_DLGFRAME, WS_EX_STATICEDGE); + check_dialog_style(WS_CHILD|WS_THICKFRAME, WS_EX_STATICEDGE, WS_CHILD|WS_THICKFRAME, WS_EX_STATICEDGE); + check_dialog_style(WS_CHILD|DS_CONTROL, 0, WS_CHILD|DS_CONTROL, WS_EX_CONTROLPARENT); + check_dialog_style(WS_CHILD|WS_CAPTION, 0, WS_CHILD|WS_CAPTION, WS_EX_WINDOWEDGE); + check_dialog_style(WS_CHILD|WS_BORDER, 0, WS_CHILD|WS_BORDER, 0); + check_dialog_style(WS_CHILD|WS_DLGFRAME, 0, WS_CHILD|WS_DLGFRAME, WS_EX_WINDOWEDGE); + check_dialog_style(WS_CHILD|WS_BORDER|DS_CONTROL, 0, WS_CHILD|DS_CONTROL, WS_EX_CONTROLPARENT); + check_dialog_style(WS_CHILD|WS_DLGFRAME|DS_CONTROL, 0, WS_CHILD|DS_CONTROL, WS_EX_CONTROLPARENT); + check_dialog_style(WS_CHILD|WS_CAPTION|WS_SYSMENU, 0, WS_CHILD|WS_CAPTION|WS_SYSMENU, WS_EX_WINDOWEDGE); + check_dialog_style(WS_CHILD|WS_SYSMENU, 0, WS_CHILD|WS_SYSMENU, 0); + check_dialog_style(WS_CHILD|WS_CAPTION|DS_CONTROL, 0, WS_CHILD|DS_CONTROL, WS_EX_CONTROLPARENT); + check_dialog_style(WS_CHILD|WS_SYSMENU|DS_CONTROL, 0, WS_CHILD|DS_CONTROL, WS_EX_CONTROLPARENT); + check_dialog_style(WS_CHILD|WS_CAPTION|WS_SYSMENU|DS_CONTROL, 0, WS_CHILD|DS_CONTROL, WS_EX_CONTROLPARENT); + check_dialog_style(WS_CHILD, WS_EX_WINDOWEDGE, WS_CHILD, 0); + check_dialog_style(WS_CHILD, WS_EX_DLGMODALFRAME, WS_CHILD, WS_EX_WINDOWEDGE|WS_EX_DLGMODALFRAME); + check_dialog_style(WS_CHILD, WS_EX_DLGMODALFRAME|WS_EX_STATICEDGE, WS_CHILD, WS_EX_STATICEDGE|WS_EX_WINDOWEDGE|WS_EX_DLGMODALFRAME); + check_dialog_style(WS_CHILD|WS_POPUP, 0, WS_CHILD|WS_POPUP|WS_CLIPSIBLINGS, 0); + check_dialog_style(WS_CHILD|WS_POPUP|WS_DLGFRAME, 0, WS_CHILD|WS_POPUP|WS_DLGFRAME|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE); + check_dialog_style(WS_CHILD|WS_POPUP|WS_THICKFRAME, 0, WS_CHILD|WS_POPUP|WS_THICKFRAME|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE); + check_dialog_style(WS_CHILD|WS_POPUP|WS_DLGFRAME, WS_EX_STATICEDGE, WS_CHILD|WS_POPUP|WS_DLGFRAME|WS_CLIPSIBLINGS, WS_EX_STATICEDGE); + check_dialog_style(WS_CHILD|WS_POPUP|WS_THICKFRAME, WS_EX_STATICEDGE, WS_CHILD|WS_POPUP|WS_THICKFRAME|WS_CLIPSIBLINGS, WS_EX_STATICEDGE); + check_dialog_style(WS_CHILD|WS_POPUP|DS_CONTROL, 0, WS_CHILD|WS_POPUP|WS_CLIPSIBLINGS|DS_CONTROL, WS_EX_CONTROLPARENT); + check_dialog_style(WS_CHILD|WS_POPUP|WS_CAPTION, 0, WS_CHILD|WS_POPUP|WS_CAPTION|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE); + check_dialog_style(WS_CHILD|WS_POPUP|WS_BORDER, 0, WS_CHILD|WS_POPUP|WS_BORDER|WS_CLIPSIBLINGS, 0); + check_dialog_style(WS_CHILD|WS_POPUP|WS_DLGFRAME, 0, WS_CHILD|WS_POPUP|WS_DLGFRAME|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE); + check_dialog_style(WS_CHILD|WS_POPUP|WS_BORDER|DS_CONTROL, 0, WS_CHILD|WS_POPUP|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT); + check_dialog_style(WS_CHILD|WS_POPUP|WS_DLGFRAME|DS_CONTROL, 0, WS_CHILD|WS_POPUP|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT); + check_dialog_style(WS_CHILD|WS_POPUP|WS_CAPTION|WS_SYSMENU, 0, WS_CHILD|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE); + check_dialog_style(WS_CHILD|WS_POPUP|WS_SYSMENU, 0, WS_CHILD|WS_POPUP|WS_SYSMENU|WS_CLIPSIBLINGS, 0); + check_dialog_style(WS_CHILD|WS_POPUP|WS_CAPTION|DS_CONTROL, 0, WS_CHILD|WS_POPUP|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT); + check_dialog_style(WS_CHILD|WS_POPUP|WS_SYSMENU|DS_CONTROL, 0, WS_CHILD|WS_POPUP|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT); + check_dialog_style(WS_CHILD|WS_POPUP|WS_CAPTION|WS_SYSMENU|DS_CONTROL, 0, WS_CHILD|WS_POPUP|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT); + check_dialog_style(WS_CHILD|WS_POPUP, WS_EX_APPWINDOW, WS_CHILD|WS_POPUP|WS_CLIPSIBLINGS, WS_EX_APPWINDOW); + check_dialog_style(WS_CHILD|WS_POPUP, WS_EX_WINDOWEDGE, WS_CHILD|WS_POPUP|WS_CLIPSIBLINGS, 0); + check_dialog_style(WS_CHILD, WS_EX_WINDOWEDGE, WS_CHILD, 0); + check_dialog_style(0, WS_EX_TOOLWINDOW, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_WINDOWEDGE|WS_EX_TOOLWINDOW|WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP, 0, WS_POPUP|WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP, WS_EX_WINDOWEDGE, WS_POPUP|WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|WS_DLGFRAME, 0, WS_POPUP|WS_DLGFRAME|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|WS_THICKFRAME, 0, WS_POPUP|WS_THICKFRAME|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|WS_DLGFRAME, WS_EX_STATICEDGE, WS_POPUP|WS_DLGFRAME|WS_CLIPSIBLINGS, WS_EX_STATICEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|WS_THICKFRAME, WS_EX_STATICEDGE, WS_POPUP|WS_THICKFRAME|WS_CLIPSIBLINGS, WS_EX_STATICEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|DS_CONTROL, 0, WS_POPUP|WS_CLIPSIBLINGS|DS_CONTROL, WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|WS_CAPTION, 0, WS_POPUP|WS_CAPTION|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|WS_BORDER, 0, WS_POPUP|WS_BORDER|WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|WS_DLGFRAME, 0, WS_POPUP|WS_DLGFRAME|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|WS_BORDER|DS_CONTROL, 0, WS_POPUP|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|WS_DLGFRAME|DS_CONTROL, 0, WS_POPUP|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|WS_CAPTION|WS_SYSMENU, 0, WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|WS_SYSMENU, 0, WS_POPUP|WS_SYSMENU|WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|WS_CAPTION|DS_CONTROL, 0, WS_POPUP|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|WS_SYSMENU|DS_CONTROL, 0, WS_POPUP|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT); + check_dialog_style(WS_POPUP|WS_CAPTION|WS_SYSMENU|DS_CONTROL, 0, WS_POPUP|DS_CONTROL|WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT); + check_dialog_style(WS_CAPTION, WS_EX_STATICEDGE, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_STATICEDGE|WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(0, WS_EX_APPWINDOW, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_APPWINDOW|WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + + if (pGetLayeredWindowAttributes) + { + check_dialog_style(0, WS_EX_LAYERED, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_LAYERED|WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(0, WS_EX_LAYERED|WS_EX_TRANSPARENT, WS_CLIPSIBLINGS|WS_CAPTION, WS_EX_LAYERED|WS_EX_TRANSPARENT|WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); + check_dialog_style(0, WS_EX_LAYERED|WS_EX_TRANSPARENT|WS_EX_TOOLWINDOW, WS_CLIPSIBLINGS|WS_CAPTION, + WS_EX_LAYERED|WS_EX_TRANSPARENT|WS_EX_TOOLWINDOW|WS_EX_WINDOWEDGE|WS_EX_CONTROLPARENT); } }
@@ -5094,20 +5323,20 @@ ok( !pGetProcessDefaultLayout( NULL ), "GetProcessDefaultLayout succeeded\n" ); ok( GetLastError() == ERROR_NOACCESS, "wrong error %u\n", GetLastError() ); SetLastError( 0xdeadbeef ); - ok( pGetProcessDefaultLayout( &layout ), - "GetProcessDefaultLayout failed err %u\n", GetLastError ()); + res = pGetProcessDefaultLayout( &layout ); + ok( res, "GetProcessDefaultLayout failed err %u\n", GetLastError ()); ok( layout == 0, "GetProcessDefaultLayout wrong layout %x\n", layout ); SetLastError( 0xdeadbeef ); - ok( pSetProcessDefaultLayout( 7 ), - "SetProcessDefaultLayout failed err %u\n", GetLastError ()); - ok( pGetProcessDefaultLayout( &layout ), - "GetProcessDefaultLayout failed err %u\n", GetLastError ()); + res = pSetProcessDefaultLayout( 7 ); + ok( res, "SetProcessDefaultLayout failed err %u\n", GetLastError ()); + res = pGetProcessDefaultLayout( &layout ); + ok( res, "GetProcessDefaultLayout failed err %u\n", GetLastError ()); ok( layout == 7, "GetProcessDefaultLayout wrong layout %x\n", layout ); SetLastError( 0xdeadbeef ); - ok( pSetProcessDefaultLayout( LAYOUT_RTL ), - "SetProcessDefaultLayout failed err %u\n", GetLastError ()); - ok( pGetProcessDefaultLayout( &layout ), - "GetProcessDefaultLayout failed err %u\n", GetLastError ()); + res = pSetProcessDefaultLayout( LAYOUT_RTL ); + ok( res, "SetProcessDefaultLayout failed err %u\n", GetLastError ()); + res = pGetProcessDefaultLayout( &layout ); + ok( res, "GetProcessDefaultLayout failed err %u\n", GetLastError ()); ok( layout == LAYOUT_RTL, "GetProcessDefaultLayout wrong layout %x\n", layout ); hwnd = CreateWindowEx(WS_EX_APPWINDOW, "static", NULL, WS_POPUP, 0, 0, 100, 100, 0, 0, 0, NULL); @@ -6685,6 +6914,7 @@
test_AdjustWindowRect(); test_window_styles(); + test_dialog_styles(); test_redrawnow(); test_csparentdc(); test_SetWindowLong();