Piotr Caban : user32: Show that IME window class is one of builtin classes.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Oct 29 07:36:57 CDT 2014
Module: wine
Branch: master
Commit: 43dcd40c0b6042cec4f072079be8c33e77a08b17
URL: http://source.winehq.org/git/wine.git/?a=commit;h=43dcd40c0b6042cec4f072079be8c33e77a08b17
Author: Piotr Caban <piotr at codeweavers.com>
Date: Tue Oct 28 12:19:40 2014 +0100
user32: Show that IME window class is one of builtin classes.
---
dlls/user32/tests/class.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/dlls/user32/tests/class.c b/dlls/user32/tests/class.c
index 1d35832..2218e79 100644
--- a/dlls/user32/tests/class.c
+++ b/dlls/user32/tests/class.c
@@ -1101,6 +1101,57 @@ static void test_comctl32_classes(void)
}
}
+static void test_IME(void)
+{
+ static const WCHAR ime_classW[] = {'I','M','E',0};
+
+ char module_name[MAX_PATH], *ptr;
+ MEMORY_BASIC_INFORMATION mbi;
+ HMODULE imm32 = NULL;
+ WNDCLASSW wnd_classw;
+ WNDCLASSA wnd_class;
+ SIZE_T size;
+ BOOL ret;
+
+ if (!GetProcAddress(GetModuleHandleA("user32.dll"), "BroadcastSystemMessageExA"))
+ {
+ skip("BroadcastSystemMessageExA not available, skipping IME class test\n");
+ return;
+ }
+
+ todo_wine ok(GetModuleHandleA("imm32") != 0, "imm32.dll is not loaded\n");
+ if (!GetModuleHandleA("imm32"))
+ imm32 = LoadLibraryA("imm32");
+
+ ret = GetClassInfoA(NULL, "IME", &wnd_class);
+ ok(ret, "GetClassInfo failed: %d\n", GetLastError());
+
+ size = VirtualQuery(wnd_class.lpfnWndProc, &mbi, sizeof(mbi));
+ todo_wine ok(size == sizeof(mbi), "VirtualQuery returned %ld\n", size);
+ if (size == sizeof(mbi)) {
+ size = GetModuleFileNameA(mbi.AllocationBase, module_name, sizeof(module_name));
+ ok(size, "GetModuleFileName failed\n");
+ for (ptr = module_name+size-1; ptr > module_name; ptr--)
+ if (*ptr == '\\' || *ptr == '/') break;
+ if (*ptr == '\\' || *ptr=='/') ptr++;
+ ok(!lstrcmpiA(ptr, "user32.dll") || !lstrcmpiA(ptr, "ntdll.dll"), "IME window proc implemented in %s\n", ptr);
+ }
+
+ ret = GetClassInfoW(NULL, ime_classW, &wnd_classw);
+ ok(ret, "GetClassInfo failed: %d\n", GetLastError());
+
+ size = VirtualQuery(wnd_classw.lpfnWndProc, &mbi, sizeof(mbi));
+ ok(size == sizeof(mbi), "VirtualQuery returned %ld\n", size);
+ size = GetModuleFileNameA(mbi.AllocationBase, module_name, sizeof(module_name));
+ ok(size, "GetModuleFileName failed\n");
+ for (ptr = module_name+size-1; ptr > module_name; ptr--)
+ if (*ptr == '\\' || *ptr == '/') break;
+ if (*ptr == '\\' || *ptr=='/') ptr++;
+ todo_wine ok(!lstrcmpiA(ptr, "user32.dll") || !lstrcmpiA(ptr, "ntdll.dll"), "IME window proc implemented in %s\n", ptr);
+
+ if (imm32) FreeLibrary(imm32);
+}
+
START_TEST(class)
{
char **argv;
@@ -1113,6 +1164,7 @@ START_TEST(class)
return;
}
+ test_IME();
test_GetClassInfo();
test_extra_values();
More information about the wine-cvs
mailing list