[IMM32] Imm(Lock|Unlock)ImeDpi and ImmSetOpenStatus (#3830)

- Add IMEDPI structure to ntuser.h.
- Implement ImmLockImeDpi/ImmUnlockImeDpi functions.
- Rewrite ImmSetOpenStatus function.
- Modify some NTUSER function prototypes.
- Modify imm32.spec.
CORE-11700
This commit is contained in:
Katayama Hirofumi MZ
2021-07-25 11:57:57 +09:00
committed by GitHub
parent 97847f2078
commit ecb0c0963d
6 changed files with 206 additions and 37 deletions

View File

@@ -1212,6 +1212,40 @@ typedef struct _IMEWND
PIMEUI pimeui;
} IMEWND, *PIMEWND;
typedef BOOL (WINAPI *FN_ImeDestroy)(UINT uReserved);
typedef BOOL (WINAPI *FN_NotifyIME)(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue);
typedef struct IMEDPI /* unconfirmed */
{
struct IMEDPI *pNext;
HINSTANCE hInst;
HKL hKL;
DWORD dwUnknown0;
DWORD dwUnknown1;
DWORD dwUnknown2[14];
DWORD cLockObj;
DWORD dwFlags;
DWORD dwUnknown3[7];
FN_ImeDestroy ImeDestroy;
DWORD dwUnknown4[5];
FN_NotifyIME NotifyIME;
/* ... */
} IMEDPI, *PIMEDPI;
#ifndef _WIN64
C_ASSERT(offsetof(IMEDPI, pNext) == 0x0);
C_ASSERT(offsetof(IMEDPI, hInst) == 0x4);
C_ASSERT(offsetof(IMEDPI, hKL) == 0x8);
C_ASSERT(offsetof(IMEDPI, cLockObj) == 0x4c);
C_ASSERT(offsetof(IMEDPI, dwFlags) == 0x50);
C_ASSERT(offsetof(IMEDPI, ImeDestroy) == 0x70);
C_ASSERT(offsetof(IMEDPI, NotifyIME) == 0x88);
#endif
/* flags for IMEDPI.dwFlags */
#define IMEDPI_FLAG_UNKNOWN 1
#define IMEDPI_FLAG_UNKNOWN2 2
DWORD
NTAPI
NtUserAssociateInputContext(
@@ -2676,9 +2710,9 @@ NtUserMoveWindow(
DWORD
NTAPI
NtUserNotifyIMEStatus(
DWORD Unknown0,
DWORD Unknown1,
DWORD Unknown2);
HWND hwnd,
HIMC hIMC,
DWORD dwConversion);
BOOL
NTAPI
@@ -2787,7 +2821,7 @@ NtUserQueryInformationThread(
DWORD
NTAPI
NtUserQueryInputContext(
DWORD dwUnknown1,
HIMC hIMC,
DWORD dwUnknown2);
DWORD