Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171/* * PROJECT: ReactOS api tests * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+) * PURPOSE: Tests for GetClassInfo * COPYRIGHT: Copyright 2023 Timo Kreuzer <timo.kreuzer@reactos.org> */
#include "precomp.h"
static USHORT GetWinVersion(VOID){ return ((GetVersion() & 0xFF) << 8) | ((GetVersion() >> 8) & 0xFF);}
VOID Test_Desktop(VOID){ WNDCLASSEXW wcex; BOOL result;
memset(&wcex, 0xab, sizeof(wcex));
result = GetClassInfoExW(GetModuleHandle(NULL), (LPCWSTR)WC_DESKTOP, &wcex); ok_int(result, (ULONG_PTR)WC_DESKTOP);
ok_hex(wcex.cbSize, 0xabababab); ok_hex(wcex.style, 0x8); ok(wcex.lpfnWndProc != NULL, "lpfnWndProc shound't be NULL\n"); ok_int(wcex.cbClsExtra, 0); ok_int(wcex.cbWndExtra, GetWinVersion() <= 0x502 ? 8 : 0); ok_ptr(wcex.hInstance, GetModuleHandle(NULL)); ok_ptr(wcex.hIcon, NULL); ok(wcex.hCursor != NULL, "hCursor shound't be NULL\n"); if (GetWinVersion() > 0x502) ok_ptr(wcex.hbrBackground, (HBRUSH)(ULONG_PTR)2); else ok(wcex.hbrBackground != NULL, "hbrBackground shound't be NULL\n"); ok_ptr(wcex.lpszMenuName, NULL); ok_ptr(wcex.lpszClassName, (LPCWSTR)WC_DESKTOP); ok_ptr(wcex.hIconSm, NULL);}
VOID Test_Dialog(VOID){ WNDCLASSEXW wcex; BOOL result;
memset(&wcex, 0xab, sizeof(wcex));
result = GetClassInfoExW(GetModuleHandle(NULL), (LPCWSTR)(ULONG_PTR)WC_DIALOG, &wcex); ok_int(result, (ULONG_PTR)WC_DIALOG); ok_hex(wcex.cbSize, 0xabababab); ok_hex(wcex.style, 0x808); ok(wcex.lpfnWndProc != NULL, "lpfnWndProc shound't be NULL\n"); ok_int(wcex.cbClsExtra, 0); ok_int(wcex.cbWndExtra, 30); // DLGWINDOWEXTRA ok_ptr(wcex.hInstance, GetModuleHandle(NULL)); ok_ptr(wcex.hIcon, NULL); ok(wcex.hCursor != NULL, "hCursor shound't be NULL\n"); ok_ptr(wcex.hbrBackground, NULL); ok_ptr(wcex.lpszMenuName, NULL); ok_ptr(wcex.lpszClassName, (LPCWSTR)(ULONG_PTR)WC_DIALOG); ok_ptr(wcex.hIconSm, NULL);}
VOID Test_Menu(VOID){ WNDCLASSEXW wcex; BOOL result;
memset(&wcex, 0xab, sizeof(wcex));
result = GetClassInfoExW(GetModuleHandle(NULL), (LPCWSTR)(ULONG_PTR)WC_MENU, &wcex); ok_int(result, (ULONG_PTR)WC_MENU);
ok_hex(wcex.cbSize, 0xabababab); ok_hex(wcex.style, 0x803); ok_ptr(wcex.lpfnWndProc, NULL); ok_int(wcex.cbClsExtra, 0); ok_int(wcex.cbWndExtra, 16); ok_ptr(wcex.hInstance, GetModuleHandle(NULL)); ok_ptr(wcex.hIcon, NULL); ok(wcex.hCursor != NULL, "hCursor shound't be NULL\n"); ok_ptr(wcex.hbrBackground, NULL); ok_ptr(wcex.lpszMenuName, NULL); ok_ptr(wcex.lpszClassName, (LPCWSTR)(ULONG_PTR)WC_MENU); ok_ptr(wcex.hIconSm, NULL);}
VOID Test_SwitchWnd(VOID){ WNDCLASSEXW wcex; BOOL result;
memset(&wcex, 0xab, sizeof(wcex));
result = GetClassInfoExW(GetModuleHandle(NULL), (LPCWSTR)(ULONG_PTR)WC_SWITCH, &wcex); ok_int(result, (ULONG_PTR)WC_SWITCH);
ok_hex(wcex.cbSize, 0xabababab); ok_hex(wcex.style, 0x803); ok_ptr(wcex.lpfnWndProc, NULL); ok_int(wcex.cbClsExtra, 0); ok_int(wcex.cbWndExtra, GetWinVersion() <= 0x502 ? sizeof(ULONG_PTR) : 16); ok_ptr(wcex.hInstance, GetModuleHandle(NULL)); ok_ptr(wcex.hIcon, NULL); ok(wcex.hCursor != NULL, "hCursor shound't be NULL\n"); ok_ptr(wcex.hbrBackground, NULL); ok_ptr(wcex.lpszMenuName, NULL); ok_ptr(wcex.lpszClassName, (LPCWSTR)(ULONG_PTR)WC_SWITCH); ok_ptr(wcex.hIconSm, NULL);}
VOID Test_Custom(VOID){ WNDCLASSEXW wcex; ATOM atom; BOOL result;
memset(&wcex, 0, sizeof(wcex));
wcex.cbSize = sizeof(WNDCLASSEXW); wcex.style = 0x1; wcex.lpfnWndProc = DefWindowProcW; wcex.cbClsExtra = 1; wcex.cbWndExtra = 5; wcex.hInstance = GetModuleHandle(NULL); wcex.hIcon = NULL; wcex.hCursor = NULL; wcex.hbrBackground = NULL; wcex.lpszMenuName = NULL; wcex.lpszClassName = L"ProTestClass1"; wcex.hIconSm = 0;
atom = RegisterClassExW(&wcex); ok(atom != 0, "Failed to register class!\n"); if (atom == 0) { skip("Failed to register class!"); return; }
memset(&wcex, 0xab, sizeof(wcex));
result = GetClassInfoExW(GetModuleHandle(NULL), (LPCWSTR)(ULONG_PTR)atom, &wcex); ok_int(result, atom);
ok_hex(wcex.cbSize, 0xabababab); ok_hex(wcex.style, 0x1); ok_ptr(wcex.lpfnWndProc, DefWindowProcW); ok_int(wcex.cbClsExtra, 1); ok_int(wcex.cbWndExtra, 5); ok_ptr(wcex.hInstance, GetModuleHandle(NULL)); ok_ptr(wcex.hIcon, NULL); ok_ptr(wcex.hIcon, NULL); ok_ptr(wcex.hbrBackground, NULL); ok_ptr(wcex.lpszMenuName, NULL); ok_ptr(wcex.lpszClassName, (LPCWSTR)(ULONG_PTR)atom); ok_ptr(wcex.hIconSm, NULL);}
START_TEST(GetClassInfo){ Test_Desktop(); Test_Dialog(); Test_SwitchWnd(); Test_Custom();}