[IMM32] Add IMP stub functions (#3989)

- Add IMP (Input Method Profiler) stub functions (ImmIMPGetIMEA/W, ImmIMPQueryIMEA/W, ImmIMPSetIMEA/W).
- Add ImmSendIMEMessageExA/W stub functions.
- Rename nt3.c as win3.c.
The prototypes can be obtained from: https://doxygen.reactos.org/dc/d20/winnls32_8h.html .
The Japanese article of IMP is available: http://www7a.biglobe.ne.jp/~tsuneoka/win32tech/7.html
CORE-11700
This commit is contained in:
Katayama Hirofumi MZ 2021-10-05 14:07:58 +09:00 committed by GitHub
parent b0d66e68c1
commit 4f006ec74b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 90 additions and 17 deletions

View file

@ -13,9 +13,9 @@ list(APPEND SOURCE
ime.c ime.c
imm.c imm.c
keymsg.c keymsg.c
nt3.c
regword.c regword.c
utils.c utils.c
win3.c
${CMAKE_CURRENT_BINARY_DIR}/imm32_stubs.c ${CMAKE_CURRENT_BINARY_DIR}/imm32_stubs.c
${CMAKE_CURRENT_BINARY_DIR}/imm32.def) ${CMAKE_CURRENT_BINARY_DIR}/imm32.def)

View file

@ -61,12 +61,12 @@
@ stdcall ImmGetRegisterWordStyleW(long long ptr) @ stdcall ImmGetRegisterWordStyleW(long long ptr)
@ stdcall ImmGetStatusWindowPos(ptr ptr) @ stdcall ImmGetStatusWindowPos(ptr ptr)
@ stdcall ImmGetVirtualKey(ptr) @ stdcall ImmGetVirtualKey(ptr)
@ stdcall -stub ImmIMPGetIMEA(ptr ptr) @ stdcall ImmIMPGetIMEA(ptr ptr)
@ stdcall -stub ImmIMPGetIMEW(ptr ptr) @ stdcall ImmIMPGetIMEW(ptr ptr)
@ stdcall -stub ImmIMPQueryIMEA(ptr) @ stdcall ImmIMPQueryIMEA(ptr)
@ stdcall -stub ImmIMPQueryIMEW(ptr) @ stdcall ImmIMPQueryIMEW(ptr)
@ stdcall -stub ImmIMPSetIMEA(ptr ptr) @ stdcall ImmIMPSetIMEA(ptr ptr)
@ stdcall -stub ImmIMPSetIMEW(ptr ptr) @ stdcall ImmIMPSetIMEW(ptr ptr)
@ stdcall ImmInstallIMEA(str str) @ stdcall ImmInstallIMEA(str str)
@ stdcall ImmInstallIMEW(wstr wstr) @ stdcall ImmInstallIMEW(wstr wstr)
@ stdcall ImmIsIME(long) @ stdcall ImmIsIME(long)
@ -89,8 +89,8 @@
@ stdcall ImmReleaseContext(ptr ptr) @ stdcall ImmReleaseContext(ptr ptr)
@ stdcall ImmRequestMessageA(ptr long long) @ stdcall ImmRequestMessageA(ptr long long)
@ stdcall ImmRequestMessageW(ptr long long) @ stdcall ImmRequestMessageW(ptr long long)
@ stdcall -stub ImmSendIMEMessageExA(ptr long) @ stdcall ImmSendIMEMessageExA(ptr ptr)
@ stdcall -stub ImmSendIMEMessageExW(ptr long) @ stdcall ImmSendIMEMessageExW(ptr ptr)
@ stub ImmSendMessageToActiveDefImeWndW @ stub ImmSendMessageToActiveDefImeWndW
@ stdcall ImmSetActiveContext(ptr ptr long) @ stdcall ImmSetActiveContext(ptr ptr long)
@ stdcall ImmSetActiveContextConsoleIME(ptr long) @ stdcall ImmSetActiveContextConsoleIME(ptr long)

View file

@ -470,7 +470,7 @@ BOOL WINAPI ImmGenerateMessage(HIMC hIMC)
RtlCopyMemory(pTrans, pMsgs, cbTrans); RtlCopyMemory(pTrans, pMsgs, cbTrans);
#ifdef IMM_NT3_SUPPORT #ifdef IMM_WIN3_SUPPORT
if (GetWin32ClientInfo()->dwExpWinVer < _WIN32_WINNT_NT4) /* old version (3.x)? */ if (GetWin32ClientInfo()->dwExpWinVer < _WIN32_WINNT_NT4) /* old version (3.x)? */
{ {
LANGID LangID = LANGIDFROMLCID(GetSystemDefaultLCID()); LANGID LangID = LANGIDFROMLCID(GetSystemDefaultLCID());
@ -520,7 +520,7 @@ Imm32PostMessages(HWND hwnd, HIMC hIMC, DWORD dwCount, LPTRANSMSG lpTransMsg)
bAnsi = !(pClientImc->dwFlags & CLIENTIMC_WIDE); bAnsi = !(pClientImc->dwFlags & CLIENTIMC_WIDE);
ImmUnlockClientImc(pClientImc); ImmUnlockClientImc(pClientImc);
#ifdef IMM_NT3_SUPPORT #ifdef IMM_WIN3_SUPPORT
if (GetWin32ClientInfo()->dwExpWinVer < _WIN32_WINNT_NT4) /* old version (3.x)? */ if (GetWin32ClientInfo()->dwExpWinVer < _WIN32_WINNT_NT4) /* old version (3.x)? */
{ {
LANGID LangID = LANGIDFROMLCID(GetSystemDefaultLCID()); LANGID LangID = LANGIDFROMLCID(GetSystemDefaultLCID());
@ -555,7 +555,7 @@ Imm32PostMessages(HWND hwnd, HIMC hIMC, DWORD dwCount, LPTRANSMSG lpTransMsg)
PostMessageW(hwnd, pItem->message, pItem->wParam, pItem->lParam); PostMessageW(hwnd, pItem->message, pItem->wParam, pItem->lParam);
} }
#ifdef IMM_NT3_SUPPORT #ifdef IMM_WIN3_SUPPORT
if (pNewTransMsg != lpTransMsg) if (pNewTransMsg != lpTransMsg)
Imm32HeapFree(pNewTransMsg); Imm32HeapFree(pNewTransMsg);
#endif #endif

View file

@ -23,6 +23,7 @@
#include <winuser.h> #include <winuser.h>
#include <winnls.h> #include <winnls.h>
#include <winreg.h> #include <winreg.h>
#include <winnls32.h>
#include <imm.h> #include <imm.h>
#include <ddk/imm.h> #include <ddk/imm.h>

View file

@ -425,3 +425,57 @@ DWORD WINAPI ImmGetIMCLockCount(HIMC hIMC)
ImmUnlockClientImc(pClientImc); ImmUnlockClientImc(pClientImc);
return ret; return ret;
} }
/***********************************************************************
* ImmIMPGetIMEA(IMM32.@)
*/
BOOL WINAPI ImmIMPGetIMEA(HWND hWnd, LPIMEPROA pImePro)
{
FIXME("(%p, %p)\n", hWnd, pImePro);
return FALSE;
}
/***********************************************************************
* ImmIMPGetIMEW(IMM32.@)
*/
BOOL WINAPI ImmIMPGetIMEW(HWND hWnd, LPIMEPROW pImePro)
{
FIXME("(%p, %p)\n", hWnd, pImePro);
return FALSE;
}
/***********************************************************************
* ImmIMPQueryIMEA(IMM32.@)
*/
BOOL WINAPI ImmIMPQueryIMEA(LPIMEPROA pImePro)
{
FIXME("(%p)\n", pImePro);
return FALSE;
}
/***********************************************************************
* ImmIMPQueryIMEW(IMM32.@)
*/
BOOL WINAPI ImmIMPQueryIMEW(LPIMEPROW pImePro)
{
FIXME("(%p)\n", pImePro);
return FALSE;
}
/***********************************************************************
* ImmIMPSetIMEA(IMM32.@)
*/
BOOL WINAPI ImmIMPSetIMEA(HWND hWnd, LPIMEPROA pImePro)
{
FIXME("(%p, %p)\n", hWnd, pImePro);
return FALSE;
}
/***********************************************************************
* ImmIMPSetIMEW(IMM32.@)
*/
BOOL WINAPI ImmIMPSetIMEW(HWND hWnd, LPIMEPROW pImePro)
{
FIXME("(%p, %p)\n", hWnd, pImePro);
return FALSE;
}

View file

@ -1,7 +1,7 @@
/* /*
* PROJECT: ReactOS IMM32 * PROJECT: ReactOS IMM32
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Implementing IMM32 NT3 compatibility * PURPOSE: Implementing IMM32 Win3.x compatibility
* COPYRIGHT: Copyright 2020-2021 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com> * COPYRIGHT: Copyright 2020-2021 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
*/ */
@ -9,7 +9,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(imm); WINE_DEFAULT_DEBUG_CHANNEL(imm);
#ifdef IMM_NT3_SUPPORT /* 3.x support */ #ifdef IMM_WIN3_SUPPORT /* 3.x support */
DWORD APIENTRY DWORD APIENTRY
ImmNt3JTransCompA(LPINPUTCONTEXTDX pIC, LPCOMPOSITIONSTRING pCS, ImmNt3JTransCompA(LPINPUTCONTEXTDX pIC, LPCOMPOSITIONSTRING pCS,
@ -170,14 +170,14 @@ DoDefault:
return ret; return ret;
} }
static DWORD APIENTRY DWORD APIENTRY
ImmNt3KTrans(DWORD dwCount, LPTRANSMSG pEntries, LPINPUTCONTEXTDX pIC, ImmNt3KTrans(DWORD dwCount, LPTRANSMSG pEntries, LPINPUTCONTEXTDX pIC,
LPCOMPOSITIONSTRING pCS, BOOL bAnsi) LPCOMPOSITIONSTRING pCS, BOOL bAnsi)
{ {
return dwCount; // FIXME return dwCount; // FIXME
} }
static DWORD APIENTRY DWORD APIENTRY
ImmNt3Trans(DWORD dwCount, LPTRANSMSG pEntries, HIMC hIMC, BOOL bAnsi, WORD wLang) ImmNt3Trans(DWORD dwCount, LPTRANSMSG pEntries, HIMC hIMC, BOOL bAnsi, WORD wLang)
{ {
BOOL ret = FALSE; BOOL ret = FALSE;
@ -202,4 +202,22 @@ ImmNt3Trans(DWORD dwCount, LPTRANSMSG pEntries, HIMC hIMC, BOOL bAnsi, WORD wLan
return ret; return ret;
} }
#endif /* IMM_NT3_SUPPORT */ #endif /* IMM_WIN3_SUPPORT */
/***********************************************************************
* ImmSendIMEMessageExA(IMM32.@)
*/
WORD WINAPI ImmSendIMEMessageExA(HWND hWnd, LPARAM lParam)
{
FIXME("(%p, %p)\n", hWnd, lParam);
return 0;
}
/***********************************************************************
* ImmSendIMEMessageExW(IMM32.@)
*/
WORD WINAPI ImmSendIMEMessageExW(HWND hWnd, LPARAM lParam)
{
FIXME("(%p, %p)\n", hWnd, lParam);
return 0;
}