在WPF中,ImmGetContext返回0

本文关键字:返回 ImmGetContext WPF | 更新日期: 2023-09-27 18:07:41

在WPF窗口,

        WindowInteropHelper h = new WindowInteropHelper(this);
        IntPtr hK = ImmGetContext(h.Handle);

ImmGetContext总是返回0。相反,在Windows窗体中,它可以正常工作。

在WPF中,ImmGetContext返回0

我相信我们也遇到过这个问题。

对于我们的应用程序,我们最终重写了WindowProc,并使用WM_IME_COMPOSITION消息中的hwnd,并将其传递给ImmGetContext()。

我们在OnSourceInitialized中设置了WindowProc。(我们的代码是c++/cli,所以这个c#可能不准确)

var handle = new WindowInteropHelper( this ).Handle;
HwndSource.FromHwnd(handle).AddHook( new HwndSourceHook( WindowProc ) );