mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
[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
This commit is contained in:
parent
04b1e8945b
commit
17617221ce
17 changed files with 615 additions and 24 deletions
|
@ -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)
|
||||
|
|
2
dll/ime/CMakeLists.txt
Normal file
2
dll/ime/CMakeLists.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
|
||||
add_subdirectory(msctfime)
|
21
dll/ime/msctfime/CMakeLists.txt
Normal file
21
dll/ime/msctfime/CMakeLists.txt
Normal file
|
@ -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)
|
23
dll/ime/msctfime/lang/en-US.rc
Normal file
23
dll/ime/msctfime/lang/en-US.rc
Normal file
|
@ -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.mz@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
|
350
dll/ime/msctfime/msctfime.c
Normal file
350
dll/ime/msctfime/msctfime.c
Normal file
|
@ -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.mz@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;
|
||||
}
|
24
dll/ime/msctfime/msctfime.h
Normal file
24
dll/ime/msctfime/msctfime.h
Normal file
|
@ -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.mz@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;
|
32
dll/ime/msctfime/msctfime.rc
Normal file
32
dll/ime/msctfime/msctfime.rc
Normal file
|
@ -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.mz@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
|
30
dll/ime/msctfime/msctfime.spec
Normal file
30
dll/ime/msctfime/msctfime.spec
Normal file
|
@ -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)
|
BIN
dll/ime/msctfime/res/down.ico
Normal file
BIN
dll/ime/msctfime/res/down.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
BIN
dll/ime/msctfime/res/unicode.ico
Normal file
BIN
dll/ime/msctfime/res/unicode.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 326 B |
16
dll/ime/msctfime/resource.h
Normal file
16
dll/ime/msctfime/resource.h
Normal file
|
@ -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
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue