1 /* 2 * PROJECT: ReactOS api tests 3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) 4 * PURPOSE: Test for imm32 HIMC 5 * COPYRIGHT: Copyright 2021 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com) 6 */ 7 8 #include "precomp.h" 9 10 START_TEST(himc) 11 { 12 DWORD style; 13 HWND hwndEdit, hwndStatic; 14 HIMC hNewIMC, hOldIMC, hIMC, hIMC1, hIMC2; 15 LPINPUTCONTEXT pIC; 16 17 /* ImmCreateContext/ImmDestroyContext and ImmLockIMC/ImmUnlockIMC */ 18 hNewIMC = ImmCreateContext(); 19 ok(hNewIMC != NULL, "\n"); 20 pIC = ImmLockIMC(hNewIMC); 21 ok(pIC == NULL, "\n"); 22 ImmUnlockIMC(hNewIMC); 23 ok(ImmDestroyContext(hNewIMC), "\n"); 24 25 /* ImmGetContext against NULL */ 26 hIMC = ImmGetContext(NULL); 27 ok(hIMC == NULL, "\n"); 28 29 /* Create EDIT control */ 30 style = ES_MULTILINE | ES_LEFT; 31 hwndEdit = CreateWindowW(L"EDIT", NULL, style, 0, 0, 100, 20, NULL, NULL, 32 GetModuleHandleW(NULL), NULL); 33 ok(hwndEdit != NULL, "\n"); 34 35 /* Create STATIC control */ 36 style = SS_LEFT; 37 hwndStatic = CreateWindowW(L"STATIC", NULL, style, 0, 30, 100, 20, NULL, NULL, 38 GetModuleHandleW(NULL), NULL); 39 ok(hwndStatic != NULL, "\n"); 40 41 /* ImmGetContext/ImmReleaseContext and ImmLockIMC/ImmUnlockIMC */ 42 hIMC1 = hIMC = ImmGetContext(hwndEdit); 43 ok(hIMC != NULL, "\n"); 44 pIC = ImmLockIMC(hIMC); 45 ok(pIC != NULL, "\n"); 46 ok(pIC->hWnd == NULL, "\n"); 47 ok(!pIC->fOpen, "\n"); 48 ok(ImmGetIMCCSize(pIC->hCompStr) != 0, "\n"); 49 ok(ImmGetIMCCSize(pIC->hCandInfo) != 0, "\n"); 50 ok(ImmGetIMCCSize(pIC->hGuideLine) != 0, "\n"); 51 ok(ImmGetIMCCSize(pIC->hPrivate) != 0, "\n"); 52 ok(ImmGetIMCCSize(pIC->hMsgBuf) != 0, "\n"); 53 ImmUnlockIMC(hNewIMC); 54 SetFocus(hwndEdit); 55 pIC = ImmLockIMC(hIMC); 56 ok(pIC != NULL, "\n"); 57 ok(pIC->hWnd == hwndEdit, "\n"); 58 ok(!pIC->fOpen, "\n"); 59 ImmUnlockIMC(hNewIMC); 60 SetFocus(NULL); 61 pIC = ImmLockIMC(hIMC); 62 ok(pIC != NULL, "\n"); 63 ok(pIC->hWnd == hwndEdit, "\n"); 64 ImmUnlockIMC(hNewIMC); 65 ok(ImmSetOpenStatus(hIMC, TRUE), "\n"); 66 pIC = ImmLockIMC(hIMC); 67 ok(pIC != NULL, "\n"); 68 ok(pIC->fOpen, "\n"); 69 ImmUnlockIMC(hNewIMC); 70 ok(ImmReleaseContext(hwndEdit, hIMC), "\n"); 71 72 hIMC2 = hIMC = ImmGetContext(hwndStatic); 73 ok(hIMC != NULL, "\n"); 74 pIC = ImmLockIMC(hIMC); 75 ok(pIC != NULL, "\n"); 76 ok(pIC->hWnd == hwndEdit, "\n"); 77 ok(ImmGetIMCCSize(pIC->hCompStr) != 0, "\n"); 78 ok(ImmGetIMCCSize(pIC->hCandInfo) != 0, "\n"); 79 ok(ImmGetIMCCSize(pIC->hGuideLine) != 0, "\n"); 80 ok(ImmGetIMCCSize(pIC->hPrivate) != 0, "\n"); 81 ok(ImmGetIMCCSize(pIC->hMsgBuf) != 0, "\n"); 82 ImmUnlockIMC(hNewIMC); 83 ok(ImmReleaseContext(hwndEdit, hIMC), "\n"); 84 85 ok(hIMC1 == hIMC2, "\n"); 86 87 /* ImmAssociateContext */ 88 hNewIMC = ImmCreateContext(); 89 ok(hNewIMC != NULL, "\n"); 90 pIC = ImmLockIMC(hNewIMC); 91 ok(pIC != NULL, "\n"); 92 ImmUnlockIMC(hNewIMC); 93 hOldIMC = ImmAssociateContext(hwndEdit, hNewIMC); 94 ok(hNewIMC != hOldIMC, "\n"); 95 hIMC = ImmGetContext(hwndEdit); 96 ok(hIMC == hNewIMC, "\n"); 97 ok(hIMC != hOldIMC, "\n"); 98 pIC = ImmLockIMC(hNewIMC); 99 ok(pIC != NULL, "\n"); 100 ok(pIC->hWnd == NULL, "\n"); 101 ok(ImmGetIMCCSize(pIC->hCompStr) != 0, "\n"); 102 ok(ImmGetIMCCSize(pIC->hCandInfo) != 0, "\n"); 103 ok(ImmGetIMCCSize(pIC->hGuideLine) != 0, "\n"); 104 ok(ImmGetIMCCSize(pIC->hPrivate) != 0, "\n"); 105 ok(ImmGetIMCCSize(pIC->hMsgBuf) != 0, "\n"); 106 ImmUnlockIMC(hNewIMC); 107 ok(ImmReleaseContext(hwndEdit, hIMC), "\n"); 108 ok(ImmDestroyContext(hNewIMC), "\n"); 109 110 DestroyWindow(hwndEdit); 111 DestroyWindow(hwndStatic); 112 } 113