From 48e655706da2afca071baae10ac01a01a6de2642 Mon Sep 17 00:00:00 2001 From: ulhc <350246356@qq.com> Date: Fri, 28 Nov 2025 23:05:45 +0800 Subject: [PATCH] Add support for WM_IME_CHAR in Win32 backend Handle WM_IME_CHAR message for input character processing. --- backends/imgui_impl_win32.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/backends/imgui_impl_win32.cpp b/backends/imgui_impl_win32.cpp index 73ff34b41..e7d93554d 100644 --- a/backends/imgui_impl_win32.cpp +++ b/backends/imgui_impl_win32.cpp @@ -879,6 +879,21 @@ IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandlerEx(HWND hwnd, UINT msg, WPA case WM_INPUTLANGCHANGE: ImGui_ImplWin32_UpdateKeyboardCodePage(io); return 0; + case WM_IME_CHAR : + if (::IsWindowUnicode(hwnd) == FALSE) + { + unsigned short ch = (unsigned short)wParam; + if (::IsDBCSLeadByte(HIBYTE(wParam))) + { + ch = MAKEWORD(HIBYTE(wParam), LOBYTE(wParam)); + } + + wchar_t wch = 0; + ::MultiByteToWideChar(bd->KeyboardCodePage, MB_PRECOMPOSED, (char*)&ch, sizeof(ch), &wch, 1); + io.AddInputCharacterUTF16(wch); + return 1; + } + return 0; case WM_CHAR: if (::IsWindowUnicode(hwnd)) {