34#define NUMCLASSWORDS 4
36#define IS_WNDPROC_HANDLE(x) (((ULONG_PTR)(x) >> 16) == (~0u >> 16))
40#elif defined __x86_64__
44#elif defined __aarch64__
51"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"
52"<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">\n"
55" name=\"Wine.User32.Tests\"\n"
56" version=\"1.0.0.0\"\n"
57" processorArchitecture=\"" ARCH "\"\n"
59"<description>Wine comctl32 test suite</description>\n"
61" <dependentAssembly>\n"
64" name=\"microsoft.windows.common-controls\"\n"
65" version=\"6.0.0.0\"\n"
66" processorArchitecture=\"" ARCH "\"\n"
67" publicKeyToken=\"6595b64144ccf1df\"\n"
70"</dependentAssembly>\n"
91 static const WCHAR className[] = {
'T',
'e',
's',
't',
'C',
'l',
'a',
's',
's',0};
92 static const WCHAR winName[] = {
'W',
'i',
'n',
'C',
'l',
'a',
's',
's',
'T',
'e',
's',
't',0};
113 ok(classatom,
"failed to register class\n");
118 "RegisterClass of the same class should fail for the second time\n");
126 ok(hTestWnd!=0,
"Failed to create window\n");
133 "GetClassLongW initial value nonzero!\n");
135 "GetClassLongW failed!\n");
147 "GetClassLongW() with invalid offset did not fail\n");
155 "GetClassLongW(%d) initial value nonzero!\n",
i);
157 "SetClassLongW(%d) failed!\n",
i);
165 "GetClassLongW value doesn't match what was set!\n");
167 "GetClassLongW failed!\n");
173 "GetClassName returned incorrect length\n");
175 "GetClassName returned incorrect name for this window's class\n");
180 ok(test_atom == classatom,
181 "class atom did not match\n");
183 "cbClsExtra did not match\n");
185 "cbWndExtra did not match\n");
187 "hbrBackground did not match\n");
189 "hCursor did not match\n");
191 "hInstance did not match\n");
194 ok(
FALSE,
"GetClassInfo (hinstance) failed!\n");
201 ok(test_atom == classatom,
202 "class atom did not match %x != %x\n", test_atom, classatom);
212 "hInstance not zero for global class %p\n",wc.
hInstance);
215 ok(
FALSE,
"GetClassInfo (0) failed for global class!\n");
220 "GetClassInfo (0) succeeded for local class!\n");
224 "Unregister class succeeded with window existing\n");
227 "DestroyWindow() failed!\n");
230 "UnregisterClass() failed\n");
233 "atom still found\n");
243 ok( !(~wc.
style &
style & ~ignore),
"System class %s is missing bits %x (%08x/%08x)\n",
245 ok( !(wc.
style & ~
style),
"System class %s has extra bits %x (%08x/%08x)\n",
249 ok( !must_exist,
"System class %s does not exist\n",
name );
277 ok_(__FILE__,
line)( atom,
"Class %s %p not found\n",
name, inst );
282 "Wrong name %s/%s for class %s %p\n",
289#define check_class(inst,name,menu) check_class_(__LINE__,inst,name,menu)
298 ok_(__FILE__,
line)( wc.
hInstance == info_inst,
"Wrong info instance %p/%p for class %s\n",
300 hwnd =
CreateWindowExA( 0,
name,
"test_window", 0, 0, 0, 0, 0, 0, 0, inst, 0 );
301 ok_(__FILE__,
line)(
hwnd !=
NULL,
"Couldn't create window for class %s inst %p\n",
name, inst );
303 "Wrong GCL instance %p/%p for class %s\n",
306 "Wrong GWL instance %p/%p for window %s\n",
309 "UnregisterClassA should fail while exists a class window\n");
311 "GetLastError() should be set to ERROR_CLASS_HAS_WINDOWS not %d\n",
GetLastError());
314#define check_instance(name,inst,info_inst,gcl_inst) check_instance_(__LINE__,name,inst,info_inst,gcl_inst)
354 const char *
name =
"__test__";
362 memset( &cls, 0,
sizeof(cls) );
372 ok(
RegisterClassA( &cls ),
"Failed to register local class for main module\n" );
379 ok(
RegisterClassA( &cls ),
"Failed to register local class for kernel32\n" );
390 wcexA.
cbSize =
sizeof(wcexA) - 1;
392 "Succeeded with invalid number of cbSize bytes\n");
394 wcexA.
cbSize =
sizeof(wcexA) + 1;
396 "Succeeded with invalid number of cbSize bytes\n");
398 wcexA.
cbSize =
sizeof(wcexA);
400 wcexA.
cbSize = 0xdeadbeef;
402 ok( wcexA.
cbSize == 0xdeadbeef,
"GetClassInfoEx returned wrong cbSize value %d\n", wcexA.
cbSize);
410 "Failed with invalid number of WndExtra bytes\n");
416 "Failed with invalid number of ClsExtra bytes\n");
422 "Failed with invalid number of ClsExtra and cbWndExtra bytes\n");
429 hwnd =
CreateWindowExA( 0,
name,
"test", 0, 0, 0, 0, 0, 0, 0, main_module, 0 );
434 ok(
RegisterClassA( &cls ),
"Failed to register local class for kernel32\n" );
445 ok(
RegisterClassA( &cls ),
"Failed to register local class for kernel32\n" );
454 ok(
RegisterClassA( &cls ),
"Failed to register local class for kernel32\n" );
471 ok(
RegisterClassA( &cls ),
"Failed to register local class for kernel32\n" );
484 ok(
RegisterClassA( &cls ),
"Failed to register local class for deadbeef\n" );
485 hwnd2 =
CreateWindowExA( 0,
name,
"test_window", 0, 0, 0, 0, 0, 0, 0,
NULL, 0 );
487 "Didn't get deadbeef class for null instance\n" );
491 hwnd2 =
CreateWindowExA( 0,
name,
"test_window", 0, 0, 0, 0, 0, 0, 0,
NULL, 0 );
493 "Didn't get kernel32 class for null instance\n" );
497 ok(
r == 3,
"expected 3, got %d\n",
r );
502 hwnd2 =
CreateWindowExA( 0,
name,
"test_window", 0, 0, 0, 0, 0, 0, 0,
NULL, 0 );
504 "Didn't get 12345678 class for null instance\n" );
513 ok( !
RegisterClassA( &cls ),
"Succeeded registering local class for null instance\n" );
517 ok(
RegisterClassA( &cls ),
"Failed to register local class for null instance\n" );
529 ok( !
RegisterClassA( &cls ),
"Succeeded registering local class for user32\n" );
532 ok( !
RegisterClassA( &cls ),
"Succeeded registering global class for user32\n" );
537 ok(
RegisterClassA( &cls ),
"Failed to register global class for main module\n" );
544 ok(
RegisterClassA( &cls ),
"Failed to register global class for main module\n" );
547 ok( !
RegisterClassA( &cls ),
"Succeeded registering local class for kernel32\n" );
550 hwnd =
CreateWindowExA( 0,
name,
"test", 0, 0, 0, 0, 0, 0, 0, main_module, 0 );
552 ok( !
RegisterClassA( &cls ),
"Succeeded registering local class for kernel32\n" );
577 ok(
RegisterClassA( &cls ),
"Failed to register global class for dummy instance\n" );
591 ok( !
RegisterClassA( &cls ),
"Succeeded registering global button class for main module\n" );
594 ok( !
RegisterClassA( &cls ),
"Succeeded registering global button class for kernel32\n" );
598 cls.
style &= ~CS_GLOBALCLASS;
601 ok(
RegisterClassA( &cls ),
"Failed to register local button class for main module\n" );
602 check_class( main_module,
"BUTTON",
"button_main_module" );
605 ok(
RegisterClassA( &cls ),
"Failed to register local button class for kernel32\n" );
606 check_class( kernel32,
"BUTTON",
"button_kernel32" );
607 check_class( main_module,
"BUTTON",
"button_main_module" );
608 ok(
UnregisterClassA(
"BUTTON", kernel32 ),
"Unregister failed for kernel32 button\n" );
609 ok(
UnregisterClassA(
"BUTTON", main_module ),
"Unregister failed for main module button\n" );
619 ok(
GetClassInfoA( 0,
"BUTTON", &wc ),
"Button class not found with null instance\n" );
620 ok(
GetClassInfoA( kernel32,
"BUTTON", &wc ),
"Button class not found with kernel32\n" );
630 hwnd =
CreateWindowExA( 0,
"EDIT",
"test", 0, 0, 0, 0, 0, 0, 0, main_module, 0 );
640 static const CHAR NORMAL_CLASSES[][10] = {
649 static const char classA[] =
"deftest";
650 static const WCHAR classW[] = {
'd',
'e',
'f',
't',
'e',
's',
't',0};
651 WCHAR unistring[] = {0x142, 0x40e, 0x3b4, 0};
652 WNDPROC pDefWindowProcA, pDefWindowProcW;
653 WNDPROC pNtdllDefWindowProcA, pNtdllDefWindowProcW;
669 if (pDefWindowProcA == pNtdllDefWindowProcA &&
670 pDefWindowProcW == pNtdllDefWindowProcW)
671 skip(
"user32.DefWindowProcX forwarded to ntdll.NtdllDefWindowProc_X\n");
674 for (
i = 0;
i < 4;
i++)
695 ok(atom != 0,
"Couldn't register class, i=%d, %d\n",
i,
GetLastError());
697 hwnd =
CreateWindowA(classA,
NULL, 0, 0, 0, 100, 100,
NULL,
NULL,
GetModuleHandleA(
NULL),
NULL);
698 ok(
hwnd !=
NULL,
"Couldn't create window i=%d\n",
i);
728 "Windows should be Unicode\n");
731 ok(
memcmp(
buf, unistring,
sizeof(unistring)) == 0,
"WM_GETTEXT invalid return\n");
733 ok(
memcmp(
buf, unistring,
sizeof(unistring)) != 0,
"WM_GETTEXT invalid return\n");
779 ok(
hwnd !=
NULL,
"Couldn't create window of class %s\n", NORMAL_CLASSES[
i]);
783 ok(!
IS_WNDPROC_HANDLE(procA),
"procA should not be a handle for %s (%p)\n", NORMAL_CLASSES[
i], procA);
784 ok(!
IS_WNDPROC_HANDLE(procW),
"procW should not be a handle for %s (%p)\n", NORMAL_CLASSES[
i], procW);
786 ok(
memcmp(
buf, classA,
sizeof(classA)) == 0,
"WM_GETTEXT A/A invalid return for class %s\n", NORMAL_CLASSES[
i]);
790 ok(
memcmp(
buf, classA,
sizeof(classA)) == 0,
"WM_GETTEXT W/A invalid return for class %s\n", NORMAL_CLASSES[
i]);
811 ok(
memcmp(
buf, unistring,
sizeof(unistring)) == 0,
"WM_GETTEXT invalid return\n");
813 ok(
memcmp(
buf, unistring,
sizeof(unistring)) == 0,
"WM_GETTEXT invalid return\n");
815 ok(
memcmp(
buf, unistring,
sizeof(unistring)) == 0,
"WM_GETTEXT invalid return\n");
819 ok(
memcmp(
buf, classA,
sizeof(classA)) == 0,
"WM_GETTEXT invalid return\n");
828 ok(
memcmp(
buf, classA,
sizeof(classA)) == 0,
"WM_GETTEXT invalid return\n");
830 ok(
memcmp(
buf, classA,
sizeof(classA)) == 0,
"WM_GETTEXT invalid return\n");
832 ok(
memcmp(
buf, classA,
sizeof(classA)) == 0,
"WM_GETTEXT invalid return\n");
851 ok(
memcmp(
buf, classA,
sizeof(classA)) == 0,
"WM_GETTEXT invalid return\n");
853 ok(
memcmp(
buf, classA,
sizeof(classA)) == 0,
"WM_GETTEXT invalid return\n");
855 ok(
memcmp(
buf, classA,
sizeof(classA)) == 0,
"WM_GETTEXT invalid return\n");
863 ok(
memcmp(
buf, unistring,
sizeof(unistring)) == 0,
"WM_GETTEXT invalid return\n");
865 ok(
memcmp(
buf, unistring,
sizeof(unistring)) == 0,
"WM_GETTEXT invalid return\n");
867 ok(
memcmp(
buf, unistring,
sizeof(unistring)) == 0,
"WM_GETTEXT invalid return\n");
871 ok(
memcmp(
buf, classA,
sizeof(classA)) == 0,
"WM_GETTEXT invalid return\n");
905 ok(atom != 0,
"RegisterClassEx returned 0\n");
957 static const WCHAR staticW[] = {
's',
't',
'a',
't',
'i',
'c',0};
983 ok(!
ret,
"GetClassInfoExA() should fail\n");
990 ok(!
ret,
"GetClassInfoExW() should fail\n");
1005 wcx.
cbSize =
sizeof(wcx) - 1;
1010 ok(wcx.
cbSize ==
sizeof(wcx) - 1,
"expected sizeof(wcx)-1, got %u\n", wcx.
cbSize);
1013 wcx.
cbSize =
sizeof(wcx) + 1;
1018 ok(wcx.
cbSize ==
sizeof(wcx) + 1,
"expected sizeof(wcx)+1, got %u\n", wcx.
cbSize);
1025 WCHAR cls_name[] = {
'I',
'c',
'o',
'n',
'T',
'e',
's',
't',
'C',
'l',
'a',
's',
's',0};
1028 HICON hsmicon, hsmallnew;
1031 memset(&wcex, 0,
sizeof wcex);
1032 wcex.
cbSize =
sizeof wcex;
1040 ok(
hwnd !=
NULL,
"Window was not created\n");
1043 ok(wcex.
hIcon == ret_wcex.
hIcon,
"Icons don't match\n");
1044 ok(ret_wcex.
hIconSm !=
NULL,
"hIconSm should be non-zero handle\n");
1047 ok(hsmicon !=
NULL,
"GetClassLong should return non-zero handle\n");
1050 "WM_GETICON with ICON_BIG should not return the class icon\n");
1052 "WM_GETICON with ICON_SMALL should not return the class icon\n");
1054 "WM_GETICON with ICON_SMALL2 should not return the class icon\n");
1059 "Previous hIconSm should be zero\n");
1061 "Should return explicitly assigned small icon\n");
1062 ok(!
GetIconInfo(hsmicon, &icinf),
"Previous small icon should be destroyed\n");
1066 ok( hsmicon !=
NULL,
"GetClassLong should return non-zero handle\n");
1073 ok(hsmicon !=
NULL,
"GetClassLong should return non-zero handle\n");
1075 ok(
GetIconInfo(hsmicon, &icinf),
"Icon should NOT be destroyed\n");
1102 actctx.cbSize =
sizeof(ACTCTXW);
1111 ok(
actctx.wProcessorArchitecture == 0,
"wProcessorArchitecture=%d\n",
actctx.wProcessorArchitecture);
1113 ok(
actctx.lpAssemblyDirectory ==
NULL,
"lpAssemblyDirectory=%p\n",
actctx.lpAssemblyDirectory);
1115 ok(
actctx.lpApplicationName ==
NULL,
"lpApplicationName=%p\n",
actctx.lpApplicationName);
1146 ok( !
module,
"comctl32 already loaded\n" );
1149 ok(
ret,
"Failed to activate context.\n");
1156 win_skip(
"Module loaded during context activation. Skipping tests.\n");
1167 ok(
ret,
"GetClassInfoW failed for %s\n",
name );
1169 ok(
module != 0,
"comctl32 not loaded\n" );
1173 hwnd =
CreateWindowA(
name,
"test",
WS_OVERLAPPEDWINDOW, 0, 0, 10, 10,
NULL,
NULL,
NULL, 0 );
1174 ok(
hwnd != 0,
"failed to create window for %s\n",
name );
1176 ok(
module != 0,
"comctl32 not loaded\n" );
1181 ok(
ret,
"Failed to deactivate context.\n");
1187 ok( !
module,
"comctl32 already loaded\n" );
1193 ok(
ret,
"GetClassInfoW failed for %s\n",
name );
1195 ok(
module != 0,
"comctl32 not loaded\n" );
1198 ok( !
module,
"comctl32 still loaded\n" );
1199 hwnd =
CreateWindowA(
name,
"test",
WS_OVERLAPPEDWINDOW, 0, 0, 10, 10,
NULL,
NULL,
NULL, 0 );
1200 ok(
hwnd != 0,
"failed to create window for %s\n",
name );
1202 ok(
module != 0,
"comctl32 not loaded\n" );
1216 static const char *classes[] =
1252 ok(
CreateProcessA(
NULL,
path_name,
NULL,
NULL,
FALSE, 0,
NULL,
NULL, &
startup, &
info ),
1253 "CreateProcess failed.\n" );
1262 static const WCHAR ime_classW[] = {
'I',
'M',
'E',0};
1273 win_skip(
"BroadcastSystemMessageExA not available, skipping IME class test\n");
1283 ok(
size ==
sizeof(mbi),
"VirtualQuery returned %ld\n",
size);
1284 if (
size ==
sizeof(mbi)) {
1286 ok(
size,
"GetModuleFileName failed\n");
1288 if (*
ptr ==
'\\' || *
ptr ==
'/')
break;
1297 ok(
size ==
sizeof(mbi),
"VirtualQuery returned %ld\n",
size);
1299 ok(
size,
"GetModuleFileName failed\n");
1301 if (*
ptr ==
'\\' || *
ptr ==
'/')
break;
1308 static const char main_manifest[] =
1309 "<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">"
1310 "<assemblyIdentity version=\"4.3.2.1\" name=\"Wine.WndClass.Test\" type=\"win32\" />"
1311 "<file name=\"file.exe\">"
1312 "<windowClass>MyTestClass</windowClass>"
1315 static const char *testclass =
"MyTestClass";
1335 ok(
ret,
"Failed to activate context.\n");
1337 memset(&wc, 0,
sizeof(wc));
1345 ok(!
ret,
"Expected failure.\n");
1348 ok(
class != 0,
"Failed to register class.\n");
1352 ok(
ret,
"Failed to get class info.\n");
1354 hwnd =
CreateWindowExA(0, testclass,
"test", 0, 0, 0, 0, 0, 0, 0,
hinst, 0);
1355 ok(
hwnd !=
NULL,
"Failed to create a window.\n");
1358 ok(hwnd2 ==
hwnd,
"Failed to find test window.\n");
1361 ok(hwnd2 ==
NULL,
"Unexpected find result %p.\n", hwnd2);
1364 ok(
ret,
"Failed to get class name.\n");
1365 ok(!
strcmp(
buff, testclass),
"Unexpected class name.\n");
1368 ok(
ret,
"Failed to get class info.\n");
1371 ok(!
ret,
"Failed to unregister class.\n");
1374 ok(
ret,
"Failed to deactivate context.\n");
1377 ok(!
ret,
"Unexpected ret val %d.\n",
ret);
1380 ok(
ret,
"Failed to get class info.\n");
1383 ok(
ret,
"Failed to get class name.\n");
1384 ok(!
strcmp(
buff, testclass),
"Unexpected class name.\n");
1388 hwnd =
CreateWindowExA(0,
"4.3.2.1!MyTestClass",
"test", 0, 0, 0, 0, 0, 0, 0,
hinst, 0);
1389 ok(
hwnd !=
NULL,
"Failed to create a window.\n");
1392 ok(hwnd2 ==
hwnd,
"Failed to find test window.\n");
1395 ok(hwnd2 ==
NULL,
"Unexpected find result %p.\n", hwnd2);
1400 ok(!
ret,
"Unexpected ret value %d.\n",
ret);
1403 ok(
ret,
"Failed to unregister class.\n");
1408 ok(
class != 0,
"Failed to register class.\n");
1411 ok(
ret,
"Failed to activate context.\n");
1415 ok(
class == 0,
"Expected failure.\n");
1418 ok(
ret,
"Failed to deactivate context.\n");
1421 ok(
ret,
"Failed to unregister class.\n");
1425 ok(
ret,
"Failed to activate context.\n");
1429 ok(
class != 0,
"Failed to register class\n");
1432 ok(
ret,
"Failed to deactivate context.\n");
1435 ok(!
ret,
"Expected failure.\n");
1438 ok(
ret,
"Failed to get class info.\n");
1441 ok(
ret,
"Failed to unregister class.\n");
1446 ok(
class != 0,
"Failed to register class.\n");
1449 ok(
ret,
"Failed to activate context.\n");
1453 ok(
class != 0,
"Failed to register class.\n");
1456 ok(
ret,
"Failed to deactivate context.\n");
1459 ok(
ret,
"Failed to unregister class.\n");
1462 ok(
ret,
"Failed to unregister class.\n");
1485 trace(
"Class test is incompatible with Win9x implementation, skipping\n");
char * strcat(char *DstString, const char *SrcString)
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
static void startup(void)
static const WCHAR nameW[]
static LPCWSTR LPCWSTR module_name
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define FILE_ATTRIBUTE_NORMAL
#define MultiByteToWideChar
VOID WINAPI ReleaseActCtx(IN HANDLE hActCtx)
BOOL WINAPI DeactivateActCtx(IN DWORD dwFlags, IN ULONG_PTR ulCookie)
BOOL WINAPI ActivateActCtx(IN HANDLE hActCtx, OUT PULONG_PTR ulCookie)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
HANDLE WINAPI CreateActCtxW(PCACTCTXW pActCtx)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
static unsigned char buff[32768]
static char * path_name(DOS_FILE *file)
GLdouble GLdouble GLdouble r
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define sprintf(buf, format,...)
static const char cls_name[]
static void check_style(const char *name, int must_exist, UINT style, UINT ignore)
static void ClassTest(HINSTANCE hInstance, BOOL global)
static void test_comctl32_classes(void)
static void test_builtinproc(void)
#define IS_WNDPROC_HANDLE(x)
static void test_extra_values(void)
static void test_IME(void)
static DWORD WINAPI thread_proc(void *param)
static const char comctl32_manifest[]
static LRESULT WINAPI TestDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
static void test_styles(void)
static BOOL RegisterTestDialog(HINSTANCE hInstance)
static void create_manifest_file(const char *filename, const char *manifest)
static void check_instance_(int line, const char *name, HINSTANCE inst, HINSTANCE info_inst, HINSTANCE gcl_inst)
static HANDLE create_test_actctx(const char *file)
static void test_icons(void)
static void check_thread_instance(const char *name, HINSTANCE inst, HINSTANCE info_inst, HINSTANCE gcl_inst)
#define check_class(inst, name, menu)
static void test_actctx_classes(void)
static void test_instances(void)
#define check_instance(name, inst, info_inst, gcl_inst)
static const struct @1724 extra_values[]
static LRESULT WINAPI ClassTest_WndProc2(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static void check_class_(int line, HINSTANCE inst, const char *name, const char *menu_name)
static void CreateDialogParamTest(HINSTANCE hInstance)
static void test_GetClassInfo(void)
static LRESULT WINAPI ClassTest_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static void test_comctl32_class(const char *name)
#define WS_OVERLAPPEDWINDOW
#define WC_NATIVEFONTCTLA
#define DATETIMEPICK_CLASSA
#define TOOLBARCLASSNAMEA
int winetest_get_mainargs(char ***pargv)
void winetest_wait_child_process(HANDLE process)
static const WCHAR staticW[]
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
static const CHAR manifest[]
static const WCHAR classW[]
SIZE_T NTAPI VirtualQuery(IN LPCVOID lpAddress, OUT PMEMORY_BASIC_INFORMATION lpBuffer, IN SIZE_T dwLength)
DWORD WINAPI GetLastError(void)
#define ERROR_CLASS_HAS_WINDOWS
#define ERROR_CLASS_ALREADY_EXISTS
#define ERROR_CLASS_DOES_NOT_EXIST
HGDIOBJ WINAPI GetStockObject(_In_ int)
#define SetWindowLongPtrA
BOOL WINAPI SetWindowTextA(_In_ HWND, _In_opt_ LPCSTR)
#define GetWindowLongPtrW
HWND WINAPI CreateWindowExA(_In_ DWORD dwExStyle, _In_opt_ LPCSTR lpClassName, _In_opt_ LPCSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI UnregisterClassA(_In_ LPCSTR, HINSTANCE)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HWND WINAPI CreateDialogParamA(_In_opt_ HINSTANCE, _In_ LPCSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetIconInfo(_In_ HICON, _Out_ PICONINFO)
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
int WINAPI GetClassNameA(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPSTR lpClassName, _In_ int nMaxCount)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetClassInfoExA(_In_opt_ HINSTANCE, _In_ LPCSTR, _Out_ LPWNDCLASSEXA)
#define GetWindowLongPtrA
HWND WINAPI FindWindowExA(_In_opt_ HWND, _In_opt_ HWND, _In_opt_ LPCSTR, _In_opt_ LPCSTR)
BOOL WINAPI GetClassInfoExW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _Out_ LPWNDCLASSEXW)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
LRESULT WINAPI DefDlgProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HANDLE WINAPI CopyImage(_In_ HANDLE, _In_ UINT, _In_ int, _In_ int, _In_ UINT)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
BOOL WINAPI IsWindowUnicode(_In_ HWND)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
ATOM WINAPI RegisterClassExA(_In_ CONST WNDCLASSEXA *)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
HICON WINAPI LoadIconA(_In_opt_ HINSTANCE hInstance, _In_ LPCSTR lpIconName)
DWORD WINAPI SetClassLongW(_In_ HWND, _In_ int, _In_ LONG)
ATOM WINAPI RegisterClassExW(_In_ CONST WNDCLASSEXW *)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI GetClassInfoA(_In_opt_ HINSTANCE, _In_ LPCSTR, _Out_ LPWNDCLASSA)
int WINAPI GetClipboardFormatNameW(_In_ UINT format, _Out_writes_(cchMaxCount) LPWSTR lpszFormatName, _In_ int cchMaxCount)
int WINAPI GetClassNameW(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPWSTR lpClassName, _In_ int nMaxCount)
HANDLE WINAPI LoadImageA(_In_opt_ HINSTANCE hInst, _In_ LPCSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
DWORD WINAPI SetClassLongA(_In_ HWND, _In_ int, _In_ LONG)
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
DWORD WINAPI GetClassLongW(_In_ HWND, _In_ int)
BOOL WINAPI GetClassInfoW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _Out_ LPWNDCLASSW)
#define SetWindowLongPtrW
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI DestroyWindow(_In_ HWND)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
int WINAPI GetSystemMetrics(_In_ int)
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)
BOOL WINAPI DestroyIcon(_In_ HICON)