[SDK][USER32] Implement WM_IME_SYSTEM.IMS_SOFTKBDONOFF (#7950)

Supporting soft keyboard will improve IME
usability.
JIRA issue: CORE-19268
- Define IMS_SOFTKBDONOFF constant as
  0x13 in <immdev.h>.
- Implement
  WM_IME_SYSTEM.IMS_SOFTKBDONOFF
  message handling in ImeWnd_OnImeSystem.
This commit is contained in:
Katayama Hirofumi MZ 2025-05-01 11:20:18 +09:00 committed by GitHub
parent e40e5f572f
commit d722e70817
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 21 additions and 3 deletions

View file

@ -103,6 +103,7 @@ typedef struct tagGUIDELINE {
#define IMS_CONFIGURE 0x0D
#define IMS_SETOPENSTATUS 0x0F
#define IMS_FREELAYOUT 0x11
#define IMS_SOFTKBDONOFF 0x13
#define IMS_GETCONVSTATUS 0x14
#define IMS_IMEHELP 0x15
#define IMS_IMEACTIVATE 0x17

View file

@ -618,8 +618,25 @@ User32DoImeHelp(PIMEUI pimeui, WPARAM wParam, LPARAM lParam)
return ret;
}
static BOOL CALLBACK
ImeWnd_SwitchSoftKbdProc(_In_ HIMC hIMC, _In_ LPARAM lParam)
{
DWORD dwConversion, dwSentence, dwNewConversion;
IMM_FN(ImmGetConversionStatus)(hIMC, &dwConversion, &dwSentence);
if (lParam)
dwNewConversion = dwConversion | IME_CMODE_SOFTKBD;
else
dwNewConversion = dwConversion & ~IME_CMODE_SOFTKBD;
if (dwNewConversion != dwConversion)
IMM_FN(ImmSetConversionStatus)(hIMC, dwNewConversion, dwSentence);
return TRUE;
}
/* Handles WM_IME_SYSTEM message of the default IME window. */
/* Win: ImeSystemHandler */
static LRESULT ImeWnd_OnImeSystem(PIMEUI pimeui, WPARAM wParam, LPARAM lParam)
{
LRESULT ret = 0;
@ -720,8 +737,8 @@ static LRESULT ImeWnd_OnImeSystem(PIMEUI pimeui, WPARAM wParam, LPARAM lParam)
ret = IMM_FN(ImmFreeLayout)((HKL)lParam);
break;
case 0x13:
FIXME("\n");
case IMS_SOFTKBDONOFF:
IMM_FN(ImmEnumInputContext)(0, ImeWnd_SwitchSoftKbdProc, lParam);
break;
case IMS_GETCONVSTATUS: