X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=rostests%2Fwin32%2Fuser32%2Fsysicon%2Fsysicon.c;h=6271a6af02d106f7896c30e9553ed986d48f2c60;hp=0e74fbbcbd5f2d5114f0fe570da225ae2945b4f2;hb=4d930e07e8431bcf0f0e7b0504ea10d6655fdab8;hpb=04554776007aaa9063255dda7d8eba31dbf7c26b diff --git a/rostests/win32/user32/sysicon/sysicon.c b/rostests/win32/user32/sysicon/sysicon.c index 0e74fbbcbd5..6271a6af02d 100644 --- a/rostests/win32/user32/sysicon/sysicon.c +++ b/rostests/win32/user32/sysicon/sysicon.c @@ -21,143 +21,175 @@ * about WS_EX_DLGMODALFRAME and WS_EX_TOOLWINDOW */ -#include "windows.h" -#include "stdio.h" -#include "resource.h" +#include +#include 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; }