[USER32_APITEST] Power to DM_REPOSITION testcase (#2055)
authorKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Wed, 20 Nov 2019 00:23:32 +0000 (09:23 +0900)
committerGitHub <noreply@github.com>
Wed, 20 Nov 2019 00:23:32 +0000 (09:23 +0900)
- Add the minimized case.
- Add a test for WS_DISPLAYCHANGE message.
CORE-16490

modules/rostests/apitests/user32/DM_REPOSITION.c
modules/rostests/apitests/user32/user32_apitest.rc

index 70d7c9e..f61aff4 100644 (file)
 
 static BOOL OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
 {
-    RECT rc, rcWork;
-    INT cx, cy;
+    RECT rc, rc2, rcWork;
+    INT cx, cy, nBitsPixel;
     HMONITOR hMon;
     MONITORINFO mi = { sizeof(mi) };
+    HDC hdc;
 
     /* get monitor info */
     hMon = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST);
@@ -63,6 +64,42 @@ static BOOL OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
     ok_long(rc.right, rc.left + cx);
     ok_long(rc.bottom, rc.top + cy);
 
+    /* minimize */
+    ShowWindow(hwnd, SW_MINIMIZE);
+    ok_int(GetWindowRect(hwnd, &rc), TRUE);
+
+    /* reposition */
+    ok_int(SendMessageW(hwnd, DM_REPOSITION, 0, 0), 0);
+    ok_int(GetWindowRect(hwnd, &rc2), TRUE);
+    ok_int(EqualRect(&rc, &rc2), TRUE);
+
+    /* restore */
+    ShowWindow(hwnd, SW_RESTORE);
+
+    /* move */
+    ok_int(SetWindowPos(hwnd, NULL,
+                        rcWork.right - cx + 80, rcWork.bottom - cy + 80, 0, 0,
+                        SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOOWNERZORDER |
+                        SWP_NOZORDER), TRUE);
+    ok_int(GetWindowRect(hwnd, &rc), TRUE);
+    ok_long(rc.left, rcWork.right - cx + 80);
+    ok_long(rc.top, rcWork.bottom - cy + 80);
+    ok_long(rc.right, rc.left + cx);
+    ok_long(rc.bottom, rc.top + cy);
+
+    /* WM_DISPLAYCHANGE */
+    hdc = GetWindowDC(hwnd);
+    nBitsPixel = GetDeviceCaps(hdc, BITSPIXEL);
+    ReleaseDC(hwnd, hdc);
+    SendMessageW(hwnd, WM_DISPLAYCHANGE, nBitsPixel,
+                 MAKELONG(GetSystemMetrics(SM_CXSCREEN),
+                          GetSystemMetrics(SM_CYSCREEN)));
+    ok_int(GetWindowRect(hwnd, &rc), TRUE);
+    ok_long(rc.left, rcWork.right - cx + 80);
+    ok_long(rc.top, rcWork.bottom - cy + 80);
+    ok_long(rc.right, rc.left + cx);
+    ok_long(rc.bottom, rc.top + cy);
+
     /* quit */
     PostMessage(hwnd, WM_COMMAND, IDOK, 0);
     return TRUE;
index 8f56c8c..6c7cfe5 100644 (file)
@@ -33,7 +33,7 @@ FONT 8, "MS Shell Dlg"
 }
 
 REPOSITION DIALOG 0, 0, 200, 150
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+STYLE WS_OVERLAPPEDWINDOW
 CAPTION "DM_REPOSITION"
 FONT 8, "MS Shell Dlg"
 {