https://git.reactos.org/?p=reactos.git;a=commitdiff;h=17617221ce3b488d1c8ec2f24cfd5fc0eabcf627
commit 17617221ce3b488d1c8ec2f24cfd5fc0eabcf627 Author: Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com> AuthorDate: Mon Dec 11 22:37:25 2023 +0900 Commit: GitHub <nore...@github.com> CommitDate: Mon Dec 11 22:37:25 2023 +0900 [MSCTFIME][SDK][USER32] Add msctfime.ime (stub) (#6141) ## Overview 1. msctfime.ime is an IME file interface for new-style IMEs a.k.a. "Text Input Processors" (TIPs). 2. msctfime.ime is loaded as old-style IME file at ImmLoadLayout in specific condition. 3. msctfime.ime communicates with the current TIP (This feature is not implemented yet). ## Proposed changes - Add msctfime module at dll/ime/msctfime. - The functions in this module are currently stub. - Move IME file interface declarations from <imm.h> to <ddk/immdev.h>. - Modify ImmNotifyIME, NotifyIME, and ImeProcessKey prototypes for x64 compliance. CORE-19360 --- dll/CMakeLists.txt | 1 + dll/ime/CMakeLists.txt | 2 + dll/ime/msctfime/CMakeLists.txt | 21 ++ dll/ime/msctfime/lang/en-US.rc | 23 +++ dll/ime/msctfime/msctfime.c | 350 +++++++++++++++++++++++++++++++++ dll/ime/msctfime/msctfime.h | 24 +++ dll/ime/msctfime/msctfime.rc | 32 +++ dll/ime/msctfime/msctfime.spec | 30 +++ dll/ime/msctfime/res/down.ico | Bin 0 -> 3438 bytes dll/ime/msctfime/res/unicode.ico | Bin 0 -> 326 bytes dll/ime/msctfime/resource.h | 16 ++ dll/win32/imm32/ime.c | 2 +- dll/win32/imm32/imm32.spec | 4 +- sdk/include/ddk/immdev.h | 109 ++++++++++ sdk/include/psdk/imm.h | 19 +- sdk/include/reactos/imetable.h | 4 +- win32ss/user/user32/include/immtable.h | 2 +- 17 files changed, 615 insertions(+), 24 deletions(-) diff --git a/dll/CMakeLists.txt b/dll/CMakeLists.txt index 08458544df7..7fd670b6b6d 100644 --- a/dll/CMakeLists.txt +++ b/dll/CMakeLists.txt @@ -4,6 +4,7 @@ add_subdirectory(apisets) add_subdirectory(appcompat) add_subdirectory(cpl) add_subdirectory(directx) +add_subdirectory(ime) add_subdirectory(keyboard) add_subdirectory(nls) add_subdirectory(np) diff --git a/dll/ime/CMakeLists.txt b/dll/ime/CMakeLists.txt new file mode 100644 index 00000000000..1c5abaad63a --- /dev/null +++ b/dll/ime/CMakeLists.txt @@ -0,0 +1,2 @@ + +add_subdirectory(msctfime) diff --git a/dll/ime/msctfime/CMakeLists.txt b/dll/ime/msctfime/CMakeLists.txt new file mode 100644 index 00000000000..3925158f4a3 --- /dev/null +++ b/dll/ime/msctfime/CMakeLists.txt @@ -0,0 +1,21 @@ + +include_directories( + ${REACTOS_SOURCE_DIR}/win32ss/include) + +spec2def(msctfime.ime msctfime.spec) + +list(APPEND SOURCE + msctfime.c) + +file(GLOB msctfime_rc_deps res/*.*) +add_rc_deps(msctfime.rc ${msctfime_rc_deps}) + +add_library(msctfime MODULE + ${SOURCE} + msctfime.rc + ${CMAKE_CURRENT_BINARY_DIR}/msctfime.def) +set_module_type(msctfime win32dll UNICODE) +set_target_properties(msctfime PROPERTIES SUFFIX ".ime") +target_link_libraries(msctfime wine uuid) +add_importlibs(msctfime user32 gdi32 advapi32 comctl32 msvcrt kernel32 ntdll) +add_cd_file(TARGET msctfime DESTINATION reactos/system32 FOR all) diff --git a/dll/ime/msctfime/lang/en-US.rc b/dll/ime/msctfime/lang/en-US.rc new file mode 100644 index 00000000000..584b75546ee --- /dev/null +++ b/dll/ime/msctfime/lang/en-US.rc @@ -0,0 +1,23 @@ +/* + * PROJECT: ReactOS msctfime.ime + * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) + * PURPOSE: English (United States) resource file + * TRANSLATOR: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com> + */ + +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +STRINGTABLE +BEGIN + IDS_OK "OK" + IDS_CANCEL "Cancel" + IDS_ABORT "&Abort" + IDS_RETRY "&Retry" + IDS_IGNORE "&Ignore" + IDS_YES "&Yes" + IDS_NO "&No" + + IDS_ENTER "Enter" + IDS_FINALIZE_STRING "Finalize the string" + IDS_CONVERSION "Conversion" +END diff --git a/dll/ime/msctfime/msctfime.c b/dll/ime/msctfime/msctfime.c new file mode 100644 index 00000000000..93865f49255 --- /dev/null +++ b/dll/ime/msctfime/msctfime.c @@ -0,0 +1,350 @@ +/* + * PROJECT: ReactOS msctfime.ime + * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) + * PURPOSE: Supporting IME interface of Text Input Processors (TIPs) + * COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com> + */ + +#include "msctfime.h" + +WINE_DEFAULT_DEBUG_CHANNEL(msctfime); + +HINSTANCE g_hInst = NULL; /* The instance of this module */ + +BOOL WINAPI +ImeInquire( + _Out_ LPIMEINFO lpIMEInfo, + _Out_ LPWSTR lpszWndClass, + _In_ DWORD dwSystemInfoFlags) +{ + FIXME("stub:(%p, %p, 0x%lX)\n", lpIMEInfo, lpszWndClass, dwSystemInfoFlags); + return FALSE; +} + +DWORD WINAPI +ImeConversionList( + _In_ HIMC hIMC, + _In_ LPCWSTR lpSrc, + _Out_ LPCANDIDATELIST lpDst, + _In_ DWORD dwBufLen, + _In_ UINT uFlag) +{ + FIXME("stub:(%p, %s, %p, 0x%lX, %u)\n", hIMC, debugstr_w(lpSrc), lpDst, dwBufLen, uFlag); + return 0; +} + +BOOL WINAPI +ImeRegisterWord( + _In_ LPCWSTR lpszReading, + _In_ DWORD dwStyle, + _In_ LPCWSTR lpszString) +{ + FIXME("stub:(%s, 0x%lX, %s)\n", debugstr_w(lpszReading), dwStyle, debugstr_w(lpszString)); + return FALSE; +} + +BOOL WINAPI +ImeUnregisterWord( + _In_ LPCWSTR lpszReading, + _In_ DWORD dwStyle, + _In_ LPCWSTR lpszString) +{ + FIXME("stub:(%s, 0x%lX, %s)\n", debugstr_w(lpszReading), dwStyle, debugstr_w(lpszString)); + return FALSE; +} + +UINT WINAPI +ImeGetRegisterWordStyle( + _In_ UINT nItem, + _Out_ LPSTYLEBUFW lpStyleBuf) +{ + FIXME("stub:(%u, %p)\n", nItem, lpStyleBuf); + return 0; +} + +UINT WINAPI +ImeEnumRegisterWord( + _In_ REGISTERWORDENUMPROCW lpfnEnumProc, + _In_opt_ LPCWSTR lpszReading, + _In_ DWORD dwStyle, + _In_opt_ LPCWSTR lpszString, + _In_opt_ LPVOID lpData) +{ + FIXME("stub:(%p, %s, %lu, %s, %p)\n", lpfnEnumProc, debugstr_w(lpszReading), + dwStyle, debugstr_w(lpszString), lpData); + return 0; +} + +BOOL WINAPI +ImeConfigure( + _In_ HKL hKL, + _In_ HWND hWnd, + _In_ DWORD dwMode, + _Inout_opt_ LPVOID lpData) +{ + FIXME("stub:(%p, %p, %lu, %p)\n", hKL, hWnd, dwMode, lpData); + return FALSE; +} + +BOOL WINAPI +ImeDestroy( + _In_ UINT uReserved) +{ + FIXME("stub:(%u)\n", uReserved); + return FALSE; +} + +LRESULT WINAPI +ImeEscape( + _In_ HIMC hIMC, + _In_ UINT uEscape, + _Inout_opt_ LPVOID lpData) +{ + FIXME("stub:(%p, %u, %p)\n", hIMC, uEscape, lpData); + return 0; +} + +BOOL WINAPI +ImeProcessKey( + _In_ HIMC hIMC, + _In_ UINT uVirKey, + _In_ LPARAM lParam, + _In_ CONST LPBYTE lpbKeyState) +{ + FIXME("stub:(%p, %u, %p, lpbKeyState)\n", hIMC, uVirKey, lParam, lpbKeyState); + return FALSE; +} + +BOOL WINAPI +ImeSelect( + _In_ HIMC hIMC, + _In_ BOOL fSelect) +{ + FIXME("stub:(%p, %u)\n", hIMC, fSelect); + return FALSE; +} + +BOOL WINAPI +ImeSetActiveContext( + _In_ HIMC hIMC, + _In_ BOOL fFlag) +{ + FIXME("stub:(%p, %u)\n", hIMC, fFlag); + return FALSE; +} + +UINT WINAPI +ImeToAsciiEx( + _In_ UINT uVirKey, + _In_ UINT uScanCode, + _In_ CONST LPBYTE lpbKeyState, + _Out_ LPTRANSMSGLIST lpTransMsgList, + _In_ UINT fuState, + _In_ HIMC hIMC) +{ + FIXME("stub:(%u, %u, %p, %p, %u, %p)\n", uVirKey, uScanCode, lpbKeyState, lpTransMsgList, + fuState, hIMC); + return 0; +} + +BOOL WINAPI +NotifyIME( + _In_ HIMC hIMC, + _In_ DWORD dwAction, + _In_ DWORD dwIndex, + _In_ DWORD_PTR dwValue) +{ + FIXME("stub:(%p, 0x%lX, 0x%lX, %p)\n", hIMC, dwAction, dwIndex, dwValue); + return FALSE; +} + +BOOL WINAPI +ImeSetCompositionString( + _In_ HIMC hIMC, + _In_ DWORD dwIndex, + _In_opt_ LPCVOID lpComp, + _In_ DWORD dwCompLen, + _In_opt_ LPCVOID lpRead, + _In_ DWORD dwReadLen) +{ + FIXME("stub:(%p, 0x%lX, %p, 0x%lX, %p, 0x%lX)\n", hIMC, dwIndex, lpComp, dwCompLen, + lpRead, dwReadLen); + return FALSE; +} + +DWORD WINAPI +ImeGetImeMenuItems( + _In_ HIMC hIMC, + _In_ DWORD dwFlags, + _In_ DWORD dwType, + _Inout_opt_ LPIMEMENUITEMINFOW lpImeParentMenu, + _Inout_opt_ LPIMEMENUITEMINFOW lpImeMenu, + _In_ DWORD dwSize) +{ + FIXME("stub:(%p, 0x%lX, 0x%lX, %p, %p, 0x%lX)\n", hIMC, dwFlags, dwType, lpImeParentMenu, + lpImeMenu, dwSize); + return 0; +} + +BOOL WINAPI +CtfImeInquireExW( + _Out_ LPIMEINFO lpIMEInfo, + _Out_ LPWSTR lpszWndClass, + _In_ DWORD dwSystemInfoFlags, + _In_ HKL hKL) +{ + FIXME("stub:(%p, %p, 0x%lX, %p)\n", lpIMEInfo, lpszWndClass, dwSystemInfoFlags, hKL); + return FALSE; +} + +BOOL WINAPI +CtfImeSelectEx( + _In_ HIMC hIMC, + _In_ BOOL fSelect, + _In_ HKL hKL) +{ + FIXME("stub:(%p, %d, %p)\n", hIMC, fSelect, hKL); + return FALSE; +} + +LRESULT WINAPI +CtfImeEscapeEx( + _In_ HIMC hIMC, + _In_ UINT uSubFunc, + _Inout_opt_ LPVOID lpData, + _In_ HKL hKL) +{ + FIXME("stub:(%p, %u, %p, %p)\n", hIMC, uSubFunc, lpData, hKL); + return 0; +} + +HRESULT WINAPI +CtfImeGetGuidAtom( + _In_ HIMC hIMC, + _In_ DWORD dwUnknown, + _Out_opt_ LPDWORD pdwGuidAtom) +{ + FIXME("stub:(%p, 0x%lX, %p)\n", hIMC, dwUnknown, pdwGuidAtom); + return E_FAIL; +} + +BOOL WINAPI +CtfImeIsGuidMapEnable( + _In_ HIMC hIMC) +{ + FIXME("stub:(%p)\n", hIMC); + return FALSE; +} + +HRESULT WINAPI +CtfImeCreateThreadMgr(VOID) +{ + FIXME("stub:()\n"); + return E_NOTIMPL; +} + +HRESULT WINAPI +CtfImeDestroyThreadMgr(VOID) +{ + FIXME("stub:()\n"); + return E_NOTIMPL; +} + +HRESULT WINAPI +CtfImeCreateInputContext( + _In_ HIMC hIMC) +{ + return E_NOTIMPL; +} + +HRESULT WINAPI +CtfImeDestroyInputContext( + _In_ HIMC hIMC) +{ + FIXME("stub:(%p)\n", hIMC); + return E_NOTIMPL; +} + +HRESULT WINAPI +CtfImeSetActiveContextAlways( + _In_ HIMC hIMC, + _In_ BOOL fActive, + _In_ HWND hWnd, + _In_ HKL hKL) +{ + FIXME("stub:(%p, %d, %p, %p)\n", hIMC, fActive, hWnd, hKL); + return E_NOTIMPL; +} + +HRESULT WINAPI +CtfImeProcessCicHotkey( + _In_ HIMC hIMC, + _In_ UINT vKey, + _In_ LPARAM lParam) +{ + FIXME("stub:(%p, %u, %p)\n", hIMC, vKey, lParam); + return E_NOTIMPL; +} + +LRESULT WINAPI +CtfImeDispatchDefImeMessage( + _In_ HWND hWnd, + _In_ UINT uMsg, + _In_ WPARAM wParam, + _In_ LPARAM lParam) +{ + FIXME("stub:(%p, %u, %p, %p)\n", hWnd, uMsg, wParam, lParam); + return 0; +} + +BOOL WINAPI +CtfImeIsIME( + _In_ HKL hKL) +{ + FIXME("stub:(%p)\n", hKL); + return FALSE; +} + +HRESULT WINAPI +CtfImeThreadDetach(VOID) +{ + ImeDestroy(0); + return S_OK; +} + +LRESULT CALLBACK +UIWndProc( + _In_ HWND hWnd, + _In_ UINT uMsg, + _In_ WPARAM wParam, + _In_ LPARAM lParam) +{ + if (uMsg == WM_CREATE) + { + FIXME("stub\n"); + return -1; + } + return 0; +} + +BOOL WINAPI +DllMain( + _In_ HINSTANCE hinstDLL, + _In_ DWORD dwReason, + _Inout_opt_ LPVOID lpvReserved) +{ + switch (dwReason) + { + case DLL_PROCESS_ATTACH: + { + TRACE("(%p, %lu, %p)\n", hinstDLL, dwReason, lpvReserved); + g_hInst = hinstDLL; + break; + } + case DLL_PROCESS_DETACH: + { + break; + } + } + return TRUE; +} diff --git a/dll/ime/msctfime/msctfime.h b/dll/ime/msctfime/msctfime.h new file mode 100644 index 00000000000..bdabd0f2e31 --- /dev/null +++ b/dll/ime/msctfime/msctfime.h @@ -0,0 +1,24 @@ +/* + * PROJECT: ReactOS msctfime.ime + * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) + * PURPOSE: Supporting IME interface of Text Input Processors (TIPs) + * COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com> + */ + +#pragma once + +#include <stdlib.h> + +#define WIN32_NO_STATUS +#define COBJMACROS + +#include <windows.h> +#include <imm.h> +#include <ddk/immdev.h> +#include <strsafe.h> + +#include <wine/debug.h> + +#include "resource.h" + +extern HINSTANCE g_hInst; diff --git a/dll/ime/msctfime/msctfime.rc b/dll/ime/msctfime/msctfime.rc new file mode 100644 index 00000000000..1f75b36dd37 --- /dev/null +++ b/dll/ime/msctfime/msctfime.rc @@ -0,0 +1,32 @@ +/* + * PROJECT: ReactOS msctfime.ime + * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) + * PURPOSE: Resource of msctfime.ime + * COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com> + */ + +#include <windef.h> +#include <winuser.rh> + +#include "resource.h" + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS msctfime.ime" +#define REACTOS_STR_INTERNAL_NAME "msctfime" +#define REACTOS_STR_ORIGINAL_FILENAME "msctfime.ime" +#include <reactos/version.rc> + +#include <reactos/manifest_hosted.rc> + +/* Icons */ +IDI_UNICODE ICON "res/unicode.ico" +IDI_DOWN ICON "res/down.ico" + +/* UTF-8 */ +#pragma code_page(65001) + +#ifdef LANGUAGE_EN_US + #include "lang/en-US.rc" +#endif diff --git a/dll/ime/msctfime/msctfime.spec b/dll/ime/msctfime/msctfime.spec new file mode 100644 index 00000000000..2e9b8708e09 --- /dev/null +++ b/dll/ime/msctfime/msctfime.spec @@ -0,0 +1,30 @@ +@ stdcall CtfImeDispatchDefImeMessage(ptr long ptr ptr) +@ stdcall CtfImeCreateInputContext(ptr) +@ stdcall CtfImeCreateThreadMgr() +@ stdcall CtfImeDestroyInputContext(ptr) +@ stdcall CtfImeDestroyThreadMgr() +@ stdcall CtfImeEscapeEx(ptr long ptr ptr) +@ stdcall CtfImeGetGuidAtom(ptr long ptr) +@ stdcall CtfImeInquireExW(ptr ptr long ptr) +@ stdcall CtfImeIsGuidMapEnable(ptr) +@ stdcall CtfImeIsIME(ptr) +@ stdcall CtfImeProcessCicHotkey(ptr long ptr) +@ stdcall CtfImeSelectEx(ptr long ptr) +@ stdcall CtfImeSetActiveContextAlways(ptr long ptr ptr) +@ stdcall CtfImeThreadDetach() +@ stdcall ImeConfigure(ptr ptr long ptr) +@ stdcall ImeConversionList(ptr wstr ptr long long) +@ stdcall ImeDestroy(long) +@ stdcall ImeEnumRegisterWord(ptr wstr long wstr ptr) +@ stdcall ImeEscape(ptr long ptr) +@ stdcall ImeGetRegisterWordStyle(long ptr) +@ stdcall ImeInquire(ptr ptr long) +@ stdcall ImeProcessKey(ptr long long ptr) +@ stdcall ImeRegisterWord(wstr long wstr) +@ stdcall ImeSelect(ptr long) +@ stdcall ImeSetActiveContext(ptr long) +@ stdcall ImeSetCompositionString(ptr long ptr long ptr long) +@ stdcall ImeToAsciiEx(long long ptr ptr long ptr) +@ stdcall ImeUnregisterWord(wstr long wstr) +@ stdcall NotifyIME(ptr long long long) +@ stdcall UIWndProc(ptr long ptr ptr) diff --git a/dll/ime/msctfime/res/down.ico b/dll/ime/msctfime/res/down.ico new file mode 100644 index 00000000000..5aa5db9b758 Binary files /dev/null and b/dll/ime/msctfime/res/down.ico differ diff --git a/dll/ime/msctfime/res/unicode.ico b/dll/ime/msctfime/res/unicode.ico new file mode 100644 index 00000000000..59a1ac7b59a Binary files /dev/null and b/dll/ime/msctfime/res/unicode.ico differ diff --git a/dll/ime/msctfime/resource.h b/dll/ime/msctfime/resource.h new file mode 100644 index 00000000000..dd8cc32caf0 --- /dev/null +++ b/dll/ime/msctfime/resource.h @@ -0,0 +1,16 @@ +#pragma once + +#define IDI_UNICODE 256 +#define IDI_DOWN 257 + +#define IDS_OK 100 +#define IDS_CANCEL 101 +#define IDS_ABORT 102 +#define IDS_RETRY 103 +#define IDS_IGNORE 104 +#define IDS_YES 105 +#define IDS_NO 106 + +#define IDS_ENTER 512 +#define IDS_FINALIZE_STRING 513 +#define IDS_CONVERSION 514 diff --git a/dll/win32/imm32/ime.c b/dll/win32/imm32/ime.c index a30b86af31b..f198f7112c1 100644 --- a/dll/win32/imm32/ime.c +++ b/dll/win32/imm32/ime.c @@ -904,7 +904,7 @@ HWND WINAPI ImmGetDefaultIMEWnd(HWND hWnd) /*********************************************************************** * ImmNotifyIME (IMM32.@) */ -BOOL WINAPI ImmNotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue) +BOOL WINAPI ImmNotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD_PTR dwValue) { HKL hKL; PIMEDPI pImeDpi; diff --git a/dll/win32/imm32/imm32.spec b/dll/win32/imm32/imm32.spec index 3bd4c297f44..03ba666c074 100644 --- a/dll/win32/imm32/imm32.spec +++ b/dll/win32/imm32/imm32.spec @@ -93,8 +93,8 @@ @ stdcall ImmLockIMC(ptr) @ stdcall ImmLockIMCC(ptr) @ stdcall ImmLockImeDpi(ptr) -@ stdcall ImmNotifyIME(ptr long long long) -@ stdcall ImmProcessKey(ptr long long long long) +@ stdcall ImmNotifyIME(ptr long long ptr) +@ stdcall ImmProcessKey(ptr long long ptr long) @ stdcall ImmPutImeMenuItemsIntoMappedFile(ptr) @ stdcall ImmReSizeIMCC(ptr long) @ stdcall ImmRegisterClient(ptr ptr) diff --git a/sdk/include/ddk/immdev.h b/sdk/include/ddk/immdev.h index e36ff688666..7dd67cdb013 100644 --- a/sdk/include/ddk/immdev.h +++ b/sdk/include/ddk/immdev.h @@ -341,6 +341,115 @@ C_ASSERT(sizeof(CLIENTIMC) == 0x34); #define CLIENTIMC_DISABLEIME 0x80 #define CLIENTIMC_UNKNOWN2 0x100 +/* IME file interface */ + +BOOL WINAPI +ImeInquire( + _Out_ LPIMEINFO lpIMEInfo, + _Out_ LPWSTR lpszWndClass, + _In_ DWORD dwSystemInfoFlags); + +DWORD WINAPI +ImeConversionList( + _In_ HIMC hIMC, + _In_ LPCWSTR lpSrc, + _Out_ LPCANDIDATELIST lpDst, + _In_ DWORD dwBufLen, + _In_ UINT uFlag); + +BOOL WINAPI +ImeRegisterWord( + _In_ LPCWSTR lpszReading, + _In_ DWORD dwStyle, + _In_ LPCWSTR lpszString); + +BOOL WINAPI +ImeUnregisterWord( + _In_ LPCWSTR lpszReading, + _In_ DWORD dwStyle, + _In_ LPCWSTR lpszString); + +UINT WINAPI +ImeGetRegisterWordStyle( + _In_ UINT nItem, + _Out_ LPSTYLEBUFW lpStyleBuf); + +UINT WINAPI +ImeEnumRegisterWord( + _In_ REGISTERWORDENUMPROCW lpfnEnumProc, + _In_opt_ LPCWSTR lpszReading, + _In_ DWORD dwStyle, + _In_opt_ LPCWSTR lpszString, + _In_opt_ LPVOID lpData); + +BOOL WINAPI +ImeConfigure( + _In_ HKL hKL, + _In_ HWND hWnd, + _In_ DWORD dwMode, + _Inout_opt_ LPVOID lpData); + +BOOL WINAPI +ImeDestroy( + _In_ UINT uReserved); + +LRESULT WINAPI +ImeEscape( + _In_ HIMC hIMC, + _In_ UINT uEscape, + _Inout_opt_ LPVOID lpData); + +BOOL WINAPI +ImeProcessKey( + _In_ HIMC hIMC, + _In_ UINT uVirKey, + _In_ LPARAM lParam, + _In_ CONST LPBYTE lpbKeyState); + +BOOL WINAPI +ImeSelect( + _In_ HIMC hIMC, + _In_ BOOL fSelect); + +BOOL WINAPI +ImeSetActiveContext( + _In_ HIMC hIMC, + _In_ BOOL fFlag); + +UINT WINAPI +ImeToAsciiEx( + _In_ UINT uVirKey, + _In_ UINT uScanCode, + _In_ CONST LPBYTE lpbKeyState, + _Out_ LPTRANSMSGLIST lpTransMsgList, + _In_ UINT fuState, + _In_ HIMC hIMC); + +BOOL WINAPI +NotifyIME( + _In_ HIMC hIMC, + _In_ DWORD dwAction, + _In_ DWORD dwIndex, + _In_ DWORD_PTR dwValue); + +BOOL WINAPI +ImeSetCompositionString( + _In_ HIMC hIMC, + _In_ DWORD dwIndex, + _In_opt_ LPCVOID lpComp, + _In_ DWORD dwCompLen, + _In_opt_ LPCVOID lpRead, + _In_ DWORD dwReadLen); + +DWORD WINAPI +ImeGetImeMenuItems( + _In_ HIMC hIMC, + _In_ DWORD dwFlags, + _In_ DWORD dwType, + _Inout_opt_ LPIMEMENUITEMINFOW lpImeParentMenu, + _Inout_opt_ LPIMEMENUITEMINFOW lpImeMenu, + _In_ DWORD dwSize); + #ifdef __cplusplus } // extern "C" #endif diff --git a/sdk/include/psdk/imm.h b/sdk/include/psdk/imm.h index 9ec9e3cfb18..7d63409ad5f 100644 --- a/sdk/include/psdk/imm.h +++ b/sdk/include/psdk/imm.h @@ -270,23 +270,6 @@ BOOL WINAPI ImmDestroySoftKeyboard( _In_ HWND hwndSoftKBD); -BOOL WINAPI ImeInquire(LPIMEINFO, LPWSTR, LPCWSTR lpszOptions); -BOOL WINAPI ImeConfigure (HKL, HWND, DWORD, LPVOID); -DWORD WINAPI ImeConversionList(HIMC, LPCWSTR, LPCANDIDATELIST,DWORD,UINT); -BOOL WINAPI ImeDestroy(UINT); -LRESULT WINAPI ImeEscape(HIMC, UINT, LPVOID); -BOOL WINAPI ImeProcessKey(HIMC, UINT, LPARAM, CONST LPBYTE); -BOOL WINAPI ImeSelect(HIMC, BOOL); -BOOL WINAPI ImeSetActiveContext(HIMC, BOOL); -UINT WINAPI ImeToAsciiEx(UINT, UINT, CONST LPBYTE, LPDWORD, UINT, HIMC); -BOOL WINAPI NotifyIME(HIMC, DWORD, DWORD, DWORD); -BOOL WINAPI ImeRegisterWord(LPCWSTR, DWORD, LPCWSTR); -BOOL WINAPI ImeUnregisterWord(LPCWSTR, DWORD, LPCWSTR); -UINT WINAPI ImeGetRegisterWordStyle(UINT, LPSTYLEBUFW); -UINT WINAPI ImeEnumRegisterWord(REGISTERWORDENUMPROCW, LPCWSTR, DWORD, LPCWSTR, LPVOID); -BOOL WINAPI ImeSetCompositionString(HIMC, DWORD, LPCVOID, DWORD, LPCVOID, DWORD); -DWORD WINAPI ImeGetImeMenuItems(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD); - /* wParam for WM_IME_CONTROL */ #define IMC_GETCANDIDATEPOS 0x0007 #define IMC_SETCANDIDATEPOS 0x0008 @@ -870,7 +853,7 @@ BOOL WINAPI ImmIsUIMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM); BOOL WINAPI ImmIsUIMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM); #define ImmIsUIMessage WINELIB_NAME_AW(ImmIsUIMessage) -BOOL WINAPI ImmNotifyIME(_In_ HIMC, _In_ DWORD, _In_ DWORD, _In_ DWORD); +BOOL WINAPI ImmNotifyIME(_In_ HIMC, _In_ DWORD, _In_ DWORD, _In_ DWORD_PTR); DWORD WINAPI ImmProcessKey(HWND, HKL, UINT, LPARAM, DWORD); diff --git a/sdk/include/reactos/imetable.h b/sdk/include/reactos/imetable.h index d41c5af653d..88f1f59f485 100644 --- a/sdk/include/reactos/imetable.h +++ b/sdk/include/reactos/imetable.h @@ -8,11 +8,11 @@ DEFINE_IME_ENTRY(UINT, ImeEnumRegisterWord, (LPVOID lpfnEnumProc, LPCVOID lpszRe 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, ImeProcessKey, (HIMC hIMC, UINT uVirKey, LPARAM 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, NotifyIME, (HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD_PTR 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) diff --git a/win32ss/user/user32/include/immtable.h b/win32ss/user/user32/include/immtable.h index b9acde65ab7..ad178c8282d 100644 --- a/win32ss/user/user32/include/immtable.h +++ b/win32ss/user/user32/include/immtable.h @@ -25,7 +25,7 @@ DEFINE_IMM_ENTRY(BOOL, ImmGetCompositionFontA, (HIMC hIMC, LPLOGFONTA plf), 0, N DEFINE_IMM_ENTRY(BOOL, ImmSetCompositionFontW, (HIMC hIMC, LPLOGFONTW plf), 0, NONVOID) DEFINE_IMM_ENTRY(BOOL, ImmSetCompositionFontA, (HIMC hIMC, LPLOGFONTA plf), 0, NONVOID) DEFINE_IMM_ENTRY(BOOL, ImmSetCompositionWindow, (HIMC hIMC, LPCOMPOSITIONFORM lpCompForm), 0, NONVOID) -DEFINE_IMM_ENTRY(BOOL, ImmNotifyIME, (HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue), 0, NONVOID) +DEFINE_IMM_ENTRY(BOOL, ImmNotifyIME, (HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD_PTR dwValue), 0, NONVOID) DEFINE_IMM_ENTRY(/*PINPUTCONTEXT*/ LPVOID, ImmLockIMC, (HIMC hIMC), 0, NONVOID) DEFINE_IMM_ENTRY(BOOL, ImmUnlockIMC, (HIMC hIMC), 0, NONVOID) DEFINE_IMM_ENTRY(BOOL, ImmLoadIME, (HKL hKL), 0, NONVOID)