Author: hbelusca Date: Fri Feb 12 15:10:59 2016 New Revision: 70710
URL: http://svn.reactos.org/svn/reactos?rev=70710&view=rev Log: [ROSTESTS]: Add "sysicon" test back, and augment it.
Added: trunk/rostests/win32/user32/CMakeLists.txt (with props) trunk/rostests/win32/user32/sysicon/CMakeLists.txt (with props) trunk/rostests/win32/user32/sysicon/sysicon.ico - copied unchanged from r70704, trunk/rostests/dibtests/vbltest/test_inv32.ico Modified: trunk/rostests/CMakeLists.txt trunk/rostests/win32/CMakeLists.txt trunk/rostests/win32/user32/sysicon/sysicon.c
Modified: trunk/rostests/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/rostests/CMakeLists.txt?rev=70710&a... ============================================================================== --- trunk/rostests/CMakeLists.txt [iso-8859-1] (original) +++ trunk/rostests/CMakeLists.txt [iso-8859-1] Fri Feb 12 15:10:59 2016 @@ -13,7 +13,7 @@ #add_subdirectory(regtests) add_subdirectory(rosautotest) add_subdirectory(tests) -#add_subdirectory(win32) +add_subdirectory(win32) add_subdirectory(winetests)
Modified: trunk/rostests/win32/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/rostests/win32/CMakeLists.txt?rev=7... ============================================================================== --- trunk/rostests/win32/CMakeLists.txt [iso-8859-1] (original) +++ trunk/rostests/win32/CMakeLists.txt [iso-8859-1] Fri Feb 12 15:10:59 2016 @@ -1 +1,2 @@ add_subdirectory(kernel32) +add_subdirectory(user32)
Added: trunk/rostests/win32/user32/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/rostests/win32/user32/CMakeLists.tx... ============================================================================== --- trunk/rostests/win32/user32/CMakeLists.txt (added) +++ trunk/rostests/win32/user32/CMakeLists.txt [iso-8859-1] Fri Feb 12 15:10:59 2016 @@ -0,0 +1 @@ +add_subdirectory(sysicon)
Propchange: trunk/rostests/win32/user32/CMakeLists.txt ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/rostests/win32/user32/sysicon/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/rostests/win32/user32/sysicon/CMake... ============================================================================== --- trunk/rostests/win32/user32/sysicon/CMakeLists.txt (added) +++ trunk/rostests/win32/user32/sysicon/CMakeLists.txt [iso-8859-1] Fri Feb 12 15:10:59 2016 @@ -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)
Propchange: trunk/rostests/win32/user32/sysicon/CMakeLists.txt ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/rostests/win32/user32/sysicon/sysicon.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/win32/user32/sysicon/sysic... ============================================================================== --- trunk/rostests/win32/user32/sysicon/sysicon.c [iso-8859-1] (original) +++ trunk/rostests/win32/user32/sysicon/sysicon.c [iso-8859-1] Fri Feb 12 15:10:59 2016 @@ -21,143 +21,175 @@ * 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: + { + HDC hDc; + PAINTSTRUCT Ps; + RECT Rect; + GetClientRect(hWnd, &Rect);
- switch (msg) - { + Rect.left = 10; + Rect.top = 10; + Rect.right -= 10; + Rect.bottom = 25;
- case WM_PAINT: - { - HDC hDc; - PAINTSTRUCT Ps; - RECT Rect; - GetClientRect(hWnd, &Rect); + hDc = BeginPaint(hWnd, &Ps); + SetBkMode(hDc, TRANSPARENT);
- Rect.left = 10; - Rect.top = 10; - Rect.right-=10; - Rect.bottom = 25; + DrawCaption(hWnd, hDc, &Rect, DC_GRADIENT | DC_ACTIVE | DC_TEXT | DC_ICON);
- hDc = BeginPaint(hWnd, &Ps); - SetBkMode( hDc, TRANSPARENT ); + EndPaint(hWnd, &Ps);
- DrawCaption(hWnd, hDc, &Rect, DC_GRADIENT | DC_ACTIVE | DC_TEXT | DC_ICON); + return 0; + }
- EndPaint(hWnd, &Ps); + case WM_DESTROY: + PostQuitMessage(0); + return 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; + 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; + 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; - } + if (!(result = RegisterClassExW(&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); + /* 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);
- if(!hWnd1) - { - return 1; - } + /* 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(hWnd1, SW_SHOW); - UpdateWindow(hWnd1); + ShowWindow(hWnd1a, SW_SHOW); + UpdateWindow(hWnd1a);
- 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); + /* 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(!hWnd2) - { - return 1; - } + if (!hWnd1b) + return 1;
- ShowWindow(hWnd2, SW_SHOW); - UpdateWindow(hWnd2); + ShowWindow(hWnd1b, SW_SHOW); + UpdateWindow(hWnd1b); + SendMessageW(hWnd1b, WM_SETICON, ICON_SMALL, (LPARAM)hIconSm); + SendMessageW(hWnd1b, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
- hWnd3 = CreateWindowEx(0, - WndClass, - L"WS_SYSMENU ", - WS_CAPTION | WS_SYSMENU , - CW_USEDEFAULT, - CW_USEDEFAULT, - 400, - 100, - NULL, - 0, - hInst, - NULL); + 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;
- if(!hWnd3) - { - return 1; - } + ShowWindow(hWnd2a, SW_SHOW); + UpdateWindow(hWnd2a);
- ShowWindow(hWnd3, SW_SHOW); - UpdateWindow(hWnd3); + 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;
- while(GetMessage(&msg, NULL, 0, 0 )) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } + ShowWindow(hWnd2b, SW_SHOW); + UpdateWindow(hWnd2b); + SendMessageW(hWnd2b, WM_SETICON, ICON_SMALL, (LPARAM)hIconSm); + SendMessageW(hWnd2b, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
- UnregisterClass(WndClass, hInst); - return 0; + 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; }