[ROSTESTS]: Add "sysicon" test back, and augment it.
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Fri, 12 Feb 2016 15:10:59 +0000 (15:10 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Fri, 12 Feb 2016 15:10:59 +0000 (15:10 +0000)
svn path=/trunk/; revision=70710

rostests/CMakeLists.txt
rostests/win32/CMakeLists.txt
rostests/win32/user32/CMakeLists.txt [new file with mode: 0644]
rostests/win32/user32/sysicon/CMakeLists.txt [new file with mode: 0644]
rostests/win32/user32/sysicon/sysicon.c
rostests/win32/user32/sysicon/sysicon.ico [new file with mode: 0644]

index 033ec82..186a50a 100644 (file)
@@ -13,7 +13,7 @@ add_subdirectory(kmtests)
 #add_subdirectory(regtests)
 add_subdirectory(rosautotest)
 add_subdirectory(tests)
-#add_subdirectory(win32)
+add_subdirectory(win32)
 add_subdirectory(winetests)
 
 
index 3a70c22..512f6ad 100644 (file)
@@ -1 +1,2 @@
 add_subdirectory(kernel32)
+add_subdirectory(user32)
diff --git a/rostests/win32/user32/CMakeLists.txt b/rostests/win32/user32/CMakeLists.txt
new file mode 100644 (file)
index 0000000..ae7ed50
--- /dev/null
@@ -0,0 +1 @@
+add_subdirectory(sysicon)
diff --git a/rostests/win32/user32/sysicon/CMakeLists.txt b/rostests/win32/user32/sysicon/CMakeLists.txt
new file mode 100644 (file)
index 0000000..2574134
--- /dev/null
@@ -0,0 +1,10 @@
+
+list(APPEND SOURCE
+    sysicon.c
+    sysicon.rc)
+
+add_executable(sysicon ${SOURCE})
+target_link_libraries(sysicon ${PSEH_LIB})
+set_module_type(sysicon win32gui UNICODE)
+add_importlibs(sysicon gdi32 user32 msvcrt kernel32)
+add_cd_file(TARGET sysicon DESTINATION reactos/bin FOR all)
index 0e74fbb..6271a6a 100644 (file)
   * about WS_EX_DLGMODALFRAME and WS_EX_TOOLWINDOW
   */
 
-#include "windows.h"
-#include "stdio.h"
-#include "resource.h"
+#include <windows.h>
+#include <stdio.h>
 
 WCHAR WndClass[] = L"sysicon_class";
+HICON hIcon = NULL, hIconSm = NULL;
 
 LRESULT CALLBACK WndProc(HWND hWnd,
-                                                        UINT msg,
-                                                        WPARAM wParam,
-                                                        LPARAM lParam)
+                         UINT msg,
+                         WPARAM wParam,
+                         LPARAM lParam)
 {
-
-       switch (msg)
-       {
-
-    case WM_PAINT:
+    switch (msg)
     {
-                       HDC hDc;
-                       PAINTSTRUCT Ps;
-           RECT Rect;
-           GetClientRect(hWnd, &Rect);
+        case WM_PAINT:
+        {
+            HDC hDc;
+            PAINTSTRUCT Ps;
+            RECT Rect;
+            GetClientRect(hWnd, &Rect);
 
-           Rect.left = 10;
-           Rect.top = 10;
-           Rect.right-=10;
-           Rect.bottom = 25;
+            Rect.left = 10;
+            Rect.top = 10;
+            Rect.right -= 10;
+            Rect.bottom = 25;
 
-                       hDc = BeginPaint(hWnd, &Ps);
-                       SetBkMode( hDc, TRANSPARENT );
+            hDc = BeginPaint(hWnd, &Ps);
+            SetBkMode(hDc, TRANSPARENT);
 
-           DrawCaption(hWnd, hDc, &Rect, DC_GRADIENT | DC_ACTIVE | DC_TEXT | DC_ICON);
+            DrawCaption(hWnd, hDc, &Rect, DC_GRADIENT | DC_ACTIVE | DC_TEXT | DC_ICON);
 
-                       EndPaint(hWnd, &Ps);
+            EndPaint(hWnd, &Ps);
 
-                       return 0;
-               }
+            return 0;
+        }
 
-   case WM_DESTROY:
-                       PostQuitMessage(0);
-                       return 0;
-       }
+        case WM_DESTROY:
+            PostQuitMessage(0);
+            return 0;
+    }
 
-       return DefWindowProc(hWnd, msg, wParam, lParam);
+    return DefWindowProcW(hWnd, msg, wParam, lParam);
 }
 
 int APIENTRY wWinMain(HINSTANCE hInst,
-    HINSTANCE hPrevInstance,
-    LPWSTR lpCmdLine,
-    int nCmdShow)
+                      HINSTANCE hPrevInstance,
+                      LPWSTR lpCmdLine,
+                      int nCmdShow)
 {
-       HWND hWnd1, hWnd2, hWnd3;
-       MSG msg;
-       WNDCLASSEX wcx;
-       UINT result;
-
-       memset(&wcx, 0, sizeof(wcx));
-       wcx.cbSize = sizeof(wcx);
-       wcx.lpfnWndProc = (WNDPROC) WndProc;
-       wcx.hInstance = hInst;
-       wcx.hbrBackground = (HBRUSH)COLOR_WINDOW;
-       wcx.lpszClassName = WndClass;
-
-       if(!(result = RegisterClassEx(&wcx)))
-       {
-               return 1;
-       }
-
-       /* WS_EX_DLGMODALFRAME */
-       hWnd1 = CreateWindowEx(WS_EX_DLGMODALFRAME,
-                               WndClass,
-                               L"WS_SYSMENU | WS_EX_DLGMODALFRAME",
-                               WS_CAPTION | WS_SYSMENU ,
-                               CW_USEDEFAULT,
-                               CW_USEDEFAULT,
-                               400,
-                               100,
-                               NULL,
-                               0,
-                               hInst,
-                               NULL);
-
-       if(!hWnd1)
-       {
-               return 1;
-       }
-
-       ShowWindow(hWnd1, SW_SHOW);
-       UpdateWindow(hWnd1);
-
-       hWnd2 = CreateWindowEx(WS_EX_TOOLWINDOW,
-                               WndClass,
-                               L"WS_SYSMENU | WS_EX_TOOLWINDOW",
-                               WS_CAPTION | WS_SYSMENU ,
-                               CW_USEDEFAULT,
-                               CW_USEDEFAULT,
-                               400,
-                               100,
-                               NULL,
-                               0,
-                               hInst,
-                               NULL);
-
-       if(!hWnd2)
-       {
-               return 1;
-       }
-
-       ShowWindow(hWnd2, SW_SHOW);
-       UpdateWindow(hWnd2);
-
-       hWnd3 = CreateWindowEx(0,
-                               WndClass,
-                               L"WS_SYSMENU ",
-                               WS_CAPTION | WS_SYSMENU ,
-                               CW_USEDEFAULT,
-                               CW_USEDEFAULT,
-                               400,
-                               100,
-                               NULL,
-                               0,
-                               hInst,
-                               NULL);
-
-       if(!hWnd3)
-       {
-               return 1;
-       }
-
-       ShowWindow(hWnd3, SW_SHOW);
-       UpdateWindow(hWnd3);
-
-       while(GetMessage(&msg, NULL, 0, 0 ))
-       {
-               TranslateMessage(&msg);
-               DispatchMessage(&msg);
-       }
-
-       UnregisterClass(WndClass, hInst);
-       return 0;
+    HWND hWnd1a, hWnd1b, hWnd2a, hWnd2b, hWnd3a, hWnd3b;
+    MSG msg;
+    WNDCLASSEXW wcx;
+    UINT result;
+
+    memset(&wcx, 0, sizeof(wcx));
+    wcx.cbSize = sizeof(wcx);
+    wcx.lpfnWndProc = (WNDPROC) WndProc;
+    wcx.hInstance = hInst;
+    wcx.hbrBackground = (HBRUSH)COLOR_WINDOW;
+    wcx.lpszClassName = WndClass;
+
+    if (!(result = RegisterClassExW(&wcx)))
+        return 1;
+
+    /* Load the user icons */
+    hIcon   = (HICON)LoadImageW(hInst, MAKEINTRESOURCEW(100), IMAGE_ICON, 0, 0, LR_SHARED | LR_DEFAULTSIZE);
+    hIconSm = (HICON)CopyImage(hIcon, IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_COPYFROMRESOURCE);
+
+    /* WS_EX_DLGMODALFRAME */
+    hWnd1a = CreateWindowExW(WS_EX_DLGMODALFRAME,
+                             WndClass,
+                             L"WS_SYSMENU | WS_EX_DLGMODALFRAME without user icon",
+                             WS_CAPTION | WS_SYSMENU ,
+                             CW_USEDEFAULT, CW_USEDEFAULT,
+                             400, 100,
+                             NULL, 0,
+                             hInst, NULL);
+    if (!hWnd1a)
+        return 1;
+
+    ShowWindow(hWnd1a, SW_SHOW);
+    UpdateWindow(hWnd1a);
+
+    /* WS_EX_DLGMODALFRAME */
+    hWnd1b = CreateWindowExW(WS_EX_DLGMODALFRAME,
+                             WndClass,
+                             L"WS_SYSMENU | WS_EX_DLGMODALFRAME with user icon",
+                             WS_CAPTION | WS_SYSMENU ,
+                             CW_USEDEFAULT, CW_USEDEFAULT,
+                             400, 100,
+                             NULL, 0,
+                             hInst, NULL);
+
+    if (!hWnd1b)
+        return 1;
+
+    ShowWindow(hWnd1b, SW_SHOW);
+    UpdateWindow(hWnd1b);
+    SendMessageW(hWnd1b, WM_SETICON, ICON_SMALL, (LPARAM)hIconSm);
+    SendMessageW(hWnd1b, WM_SETICON, ICON_BIG,   (LPARAM)hIcon);
+
+    hWnd2a = CreateWindowExW(WS_EX_TOOLWINDOW,
+                             WndClass,
+                             L"WS_SYSMENU | WS_EX_TOOLWINDOW without user icon",
+                             WS_CAPTION | WS_SYSMENU ,
+                             CW_USEDEFAULT, CW_USEDEFAULT,
+                             400, 100,
+                             NULL, 0,
+                             hInst, NULL);
+    if (!hWnd2a)
+        return 1;
+
+    ShowWindow(hWnd2a, SW_SHOW);
+    UpdateWindow(hWnd2a);
+
+    hWnd2b = CreateWindowExW(WS_EX_TOOLWINDOW,
+                             WndClass,
+                             L"WS_SYSMENU | WS_EX_TOOLWINDOW with user icon",
+                             WS_CAPTION | WS_SYSMENU ,
+                             CW_USEDEFAULT, CW_USEDEFAULT,
+                             400, 100,
+                             NULL, 0,
+                             hInst, NULL);
+    if (!hWnd2b)
+        return 1;
+
+    ShowWindow(hWnd2b, SW_SHOW);
+    UpdateWindow(hWnd2b);
+    SendMessageW(hWnd2b, WM_SETICON, ICON_SMALL, (LPARAM)hIconSm);
+    SendMessageW(hWnd2b, WM_SETICON, ICON_BIG,   (LPARAM)hIcon);
+
+    hWnd3a = CreateWindowExW(0,
+                             WndClass,
+                             L"WS_SYSMENU without user icon",
+                             WS_CAPTION | WS_SYSMENU,
+                             CW_USEDEFAULT, CW_USEDEFAULT,
+                             400, 100,
+                             NULL, 0,
+                             hInst, NULL);
+    if (!hWnd3a)
+        return 1;
+
+    ShowWindow(hWnd3a, SW_SHOW);
+    UpdateWindow(hWnd3a);
+
+    hWnd3b = CreateWindowExW(0,
+                             WndClass,
+                             L"WS_SYSMENU with user icon",
+                             WS_CAPTION | WS_SYSMENU,
+                             CW_USEDEFAULT, CW_USEDEFAULT,
+                             400, 100,
+                             NULL, 0,
+                             hInst, NULL);
+    if (!hWnd3b)
+        return 1;
+
+    ShowWindow(hWnd3b, SW_SHOW);
+    UpdateWindow(hWnd3b);
+    SendMessageW(hWnd3b, WM_SETICON, ICON_SMALL, (LPARAM)hIconSm);
+    SendMessageW(hWnd3b, WM_SETICON, ICON_BIG,   (LPARAM)hIcon);
+
+    while(GetMessageW(&msg, NULL, 0, 0 ))
+    {
+        TranslateMessage(&msg);
+        DispatchMessageW(&msg);
+    }
+
+    if (hIcon)   DestroyIcon(hIcon);
+    if (hIconSm) DestroyIcon(hIconSm);
+
+    UnregisterClassW(WndClass, hInst);
+    return 0;
 }
diff --git a/rostests/win32/user32/sysicon/sysicon.ico b/rostests/win32/user32/sysicon/sysicon.ico
new file mode 100644 (file)
index 0000000..2c32fdf
Binary files /dev/null and b/rostests/win32/user32/sysicon/sysicon.ico differ