mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 16:36:07 +00:00
[IMM32][SDK][NTUSER][IMM32_WINETEST] Add CtfImmGenerateMessage (#6037)
Implementing advanced text service... - Add CtfImmGenerateMessage function. - Modify imm32.spec. - Move TRANSMSG, TRANSMSGLIST etc. in win32ss/include/ntuser.h to <immdev.h>. - Move win32ss/include/imetable.h to sdk/include/reactos/imetable.h. - Move dll/win32/imm32/CtfImeTable.h to sdk/include/reactos/CtfImeTable.h. - Fix build failure of imm32_winetest due to TRANSMSG redefinition. CORE-19268
This commit is contained in:
parent
6783061894
commit
3b2fdc56bd
9 changed files with 201 additions and 109 deletions
|
@ -1,22 +0,0 @@
|
|||
/* DEFINE_IME_ENTRY(type, name, params, optional) */
|
||||
DEFINE_IME_ENTRY(BOOL, ImeInquire, (LPIMEINFO lpIMEInfo, LPVOID lpszWndClass, DWORD dwSystemInfoFlags), FALSE)
|
||||
DEFINE_IME_ENTRY(DWORD, ImeConversionList, (HIMC hIMC, LPCVOID lpSrc, LPCANDIDATELIST lpDst, DWORD dwBufLen, UINT uFlag), FALSE)
|
||||
DEFINE_IME_ENTRY(BOOL, ImeRegisterWord, (LPCVOID lpszReading, DWORD dwStyle, LPCVOID lpszString), FALSE)
|
||||
DEFINE_IME_ENTRY(BOOL, ImeUnregisterWord, (LPCVOID lpszReading, DWORD dwStyle, LPCVOID lpszString), FALSE)
|
||||
DEFINE_IME_ENTRY(UINT, ImeGetRegisterWordStyle, (UINT nItem, LPVOID lpStyleBuf), FALSE)
|
||||
DEFINE_IME_ENTRY(UINT, ImeEnumRegisterWord, (LPVOID lpfnEnumProc, LPCVOID lpszReading, DWORD dwStyle, LPCVOID lpszString, LPVOID lpData), FALSE)
|
||||
DEFINE_IME_ENTRY(BOOL, ImeConfigure, (HKL hKL, HWND hWnd, DWORD dwMode, LPVOID lpData), FALSE)
|
||||
DEFINE_IME_ENTRY(BOOL, ImeDestroy, (UINT uReserved), FALSE)
|
||||
DEFINE_IME_ENTRY(LRESULT, ImeEscape, (HIMC hIMC, UINT uEscape, LPVOID lpData), FALSE)
|
||||
DEFINE_IME_ENTRY(BOOL, ImeProcessKey, (HIMC hIMC, UINT uVirKey, DWORD lParam, CONST LPBYTE lpbKeyState), FALSE)
|
||||
DEFINE_IME_ENTRY(BOOL, ImeSelect, (HIMC hIMC, BOOL fSelect), FALSE)
|
||||
DEFINE_IME_ENTRY(BOOL, ImeSetActiveContext, (HIMC hIMC, BOOL fFlag), FALSE)
|
||||
DEFINE_IME_ENTRY(UINT, ImeToAsciiEx, (UINT uVirKey, UINT uScanCode, CONST LPBYTE lpbKeyState, LPTRANSMSGLIST lpTransMsgList, UINT fuState, HIMC hIMC), FALSE)
|
||||
DEFINE_IME_ENTRY(BOOL, NotifyIME, (HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue), FALSE)
|
||||
DEFINE_IME_ENTRY(BOOL, ImeSetCompositionString, (HIMC hIMC, DWORD dwIndex, LPCVOID lpComp, DWORD dwCompLen, LPCVOID lpRead, DWORD dwReadLen), FALSE)
|
||||
DEFINE_IME_ENTRY(DWORD, ImeGetImeMenuItems, (HIMC hIMC, DWORD dwFlags, DWORD dwType, LPIMEMENUITEMINFOW lpImeParentMenu, LPIMEMENUITEMINFOW lpImeMenu, DWORD dwSize), TRUE)
|
||||
DEFINE_IME_ENTRY(BOOL, CtfImeInquireExW, (LPIMEINFO lpIMEInfo, LPVOID lpszWndClass, DWORD dwSystemInfoFlags, HKL hKL), TRUE)
|
||||
DEFINE_IME_ENTRY(BOOL, CtfImeSelectEx, (HIMC hIMC, BOOL fSelect, HKL hKL), TRUE)
|
||||
DEFINE_IME_ENTRY(LRESULT, CtfImeEscapeEx, (HIMC hIMC, UINT uSubFunc, LPVOID lpData, HKL hKL), TRUE)
|
||||
DEFINE_IME_ENTRY(HRESULT, CtfImeGetGuidAtom, (HIMC hIMC, DWORD dwUnknown, LPDWORD pdwGuidAtom), TRUE)
|
||||
DEFINE_IME_ENTRY(BOOL, CtfImeIsGuidMapEnable, (HIMC hIMC), TRUE)
|
|
@ -1261,107 +1261,6 @@ typedef struct _IMEWND
|
|||
PIMEUI pimeui;
|
||||
} IMEWND, *PIMEWND;
|
||||
|
||||
typedef struct tagTRANSMSG
|
||||
{
|
||||
UINT message;
|
||||
WPARAM wParam;
|
||||
LPARAM lParam;
|
||||
} TRANSMSG, *PTRANSMSG, *LPTRANSMSG;
|
||||
|
||||
typedef struct tagTRANSMSGLIST
|
||||
{
|
||||
UINT uMsgCount;
|
||||
TRANSMSG TransMsg[ANYSIZE_ARRAY];
|
||||
} TRANSMSGLIST, *PTRANSMSGLIST, *LPTRANSMSGLIST;
|
||||
|
||||
#define DEFINE_IME_ENTRY(type, name, params, extended) typedef type (WINAPI *FN_##name) params;
|
||||
#include "imetable.h"
|
||||
#undef DEFINE_IME_ENTRY
|
||||
|
||||
typedef struct IMEDPI
|
||||
{
|
||||
struct IMEDPI *pNext;
|
||||
HINSTANCE hInst;
|
||||
HKL hKL;
|
||||
IMEINFO ImeInfo;
|
||||
UINT uCodePage;
|
||||
WCHAR szUIClass[16];
|
||||
DWORD cLockObj;
|
||||
DWORD dwFlags;
|
||||
#define DEFINE_IME_ENTRY(type, name, params, extended) FN_##name name;
|
||||
#include "imetable.h"
|
||||
#undef DEFINE_IME_ENTRY
|
||||
} 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, ImeInfo) == 0xc);
|
||||
C_ASSERT(offsetof(IMEDPI, uCodePage) == 0x28);
|
||||
C_ASSERT(offsetof(IMEDPI, szUIClass) == 0x2c);
|
||||
C_ASSERT(offsetof(IMEDPI, cLockObj) == 0x4c);
|
||||
C_ASSERT(offsetof(IMEDPI, dwFlags) == 0x50);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeInquire) == 0x54);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeConversionList) == 0x58);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeRegisterWord) == 0x5c);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeUnregisterWord) == 0x60);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeGetRegisterWordStyle) == 0x64);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeEnumRegisterWord) == 0x68);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeConfigure) == 0x6c);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeDestroy) == 0x70);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeEscape) == 0x74);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeProcessKey) == 0x78);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeSelect) == 0x7c);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeSetActiveContext) == 0x80);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeToAsciiEx) == 0x84);
|
||||
C_ASSERT(offsetof(IMEDPI, NotifyIME) == 0x88);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeSetCompositionString) == 0x8c);
|
||||
C_ASSERT(offsetof(IMEDPI, ImeGetImeMenuItems) == 0x90);
|
||||
C_ASSERT(offsetof(IMEDPI, CtfImeInquireExW) == 0x94);
|
||||
C_ASSERT(offsetof(IMEDPI, CtfImeSelectEx) == 0x98);
|
||||
C_ASSERT(offsetof(IMEDPI, CtfImeEscapeEx) == 0x9c);
|
||||
C_ASSERT(offsetof(IMEDPI, CtfImeGetGuidAtom) == 0xa0);
|
||||
C_ASSERT(offsetof(IMEDPI, CtfImeIsGuidMapEnable) == 0xa4);
|
||||
C_ASSERT(sizeof(IMEDPI) == 0xa8);
|
||||
#endif
|
||||
|
||||
/* flags for IMEDPI.dwFlags */
|
||||
#define IMEDPI_FLAG_UNLOADED 0x1
|
||||
#define IMEDPI_FLAG_LOCKED 0x2
|
||||
|
||||
/* unconfirmed */
|
||||
typedef struct tagCLIENTIMC
|
||||
{
|
||||
HANDLE hInputContext; /* LocalAlloc'ed LHND */
|
||||
LONG cLockObj;
|
||||
DWORD dwFlags;
|
||||
DWORD dwCompatFlags;
|
||||
RTL_CRITICAL_SECTION cs;
|
||||
UINT uCodePage;
|
||||
HKL hKL;
|
||||
BOOL bUnknown4;
|
||||
} CLIENTIMC, *PCLIENTIMC;
|
||||
|
||||
#ifndef _WIN64
|
||||
C_ASSERT(offsetof(CLIENTIMC, hInputContext) == 0x0);
|
||||
C_ASSERT(offsetof(CLIENTIMC, cLockObj) == 0x4);
|
||||
C_ASSERT(offsetof(CLIENTIMC, dwFlags) == 0x8);
|
||||
C_ASSERT(offsetof(CLIENTIMC, dwCompatFlags) == 0xc);
|
||||
C_ASSERT(offsetof(CLIENTIMC, cs) == 0x10);
|
||||
C_ASSERT(offsetof(CLIENTIMC, uCodePage) == 0x28);
|
||||
C_ASSERT(offsetof(CLIENTIMC, hKL) == 0x2c);
|
||||
C_ASSERT(sizeof(CLIENTIMC) == 0x34);
|
||||
#endif
|
||||
|
||||
/* flags for CLIENTIMC */
|
||||
#define CLIENTIMC_WIDE 0x1
|
||||
#define CLIENTIMC_ACTIVE 0x2
|
||||
#define CLIENTIMC_UNKNOWN4 0x20
|
||||
#define CLIENTIMC_DESTROY 0x40
|
||||
#define CLIENTIMC_DISABLEIME 0x80
|
||||
#define CLIENTIMC_UNKNOWN2 0x100
|
||||
|
||||
DWORD
|
||||
NTAPI
|
||||
NtUserAssociateInputContext(HWND hWnd, HIMC hIMC, DWORD dwFlags);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue