user32: Preserve beginning of extra data for MDI windows.

Sebastian Lackner sebastian at fds-team.de
Fri Feb 26 00:24:51 CST 2016


From: Michael Müller <michael at fds-team.de>

Signed-off-by: Michael Müller <michael at fds-team.de>
Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
---

For https://bugs.winehq.org/show_bug.cgi?id=15473.

 dlls/user32/mdi.c       |    1 +
 dlls/user32/tests/msg.c |    6 +++++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/dlls/user32/mdi.c b/dlls/user32/mdi.c
index b5a0473..b360528 100644
--- a/dlls/user32/mdi.c
+++ b/dlls/user32/mdi.c
@@ -127,6 +127,7 @@ typedef struct
      * states it must keep coherency with USER32 on its own. This is true for
      * Windows as well.
      */
+    LONG      reserved;
     UINT      nActiveChildren;
     HWND      hwndChildMaximized;
     HWND      hwndActiveChild;
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index 94fe4cb..98bf53d 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -3380,6 +3380,7 @@ static void test_mdi_messages(void)
     BOOL zoomed;
     RECT rc;
     HMENU hMenu = CreateMenu();
+    LONG val;
 
     if (!mdi_RegisterWindowClasses()) assert(0);
 
@@ -3408,8 +3409,9 @@ static void test_mdi_messages(void)
                                  rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top,
                                  mdi_frame, 0, GetModuleHandleA(0), &client_cs);
     assert(mdi_client);
-    ok_sequence(WmCreateMDIclientSeq, "Create visible MDI client window", FALSE);
+    SetWindowLongA(mdi_client, 0, 0xdeadbeef);
 
+    ok_sequence(WmCreateMDIclientSeq, "Create visible MDI client window", FALSE);
     ok(GetActiveWindow() == mdi_frame, "wrong active window %p\n", GetActiveWindow());
     ok(GetFocus() == mdi_frame, "input focus should be on MDI frame not on %p\n", GetFocus());
 
@@ -3867,6 +3869,8 @@ static void test_mdi_messages(void)
     SetFocus(0);
     flush_sequence();
 
+    val = GetWindowLongA(mdi_client, 0);
+    ok(val == 0xdeadbeef || broken(val == 0) /* >= Win Vista */, "Expected 0xdeadbeef, got 0x%x\n", val);
     DestroyWindow(mdi_client);
     ok_sequence(WmDestroyMDIclientSeq, "Destroy MDI client window", FALSE);
 
-- 
2.7.1



More information about the wine-patches mailing list