我想在winform应用程序的编辑区输入韩文。
但是字符是重复的,我已经尝试覆盖默认的WndProc
,但没有任何工作。
switch (m.WParam.ToInt32())
{
case Common.Interop.Window.WM_IME_CHAR:
break;
case Common.Interop.Window.WM_IME_ENDCOMPOSITION:
PassCharToScreen(m);
break;
case Common.Interop.Window.WM_CHAR:
PassCharToScreen(m);
break;
case Common.Interop.Window.WM_IME_NOTIFY:
break;
case Common.Interop.Window.WM_IME_COMPOSITION:
PassCharToScreen(m);
break;
case Common.Interop.Window.WM_IME_COMPOSITIONFULL:
break;
当我输入英语时,断点命中WM_CHAR
,但当我输入韩文时,它在第一个字符上命中WM_IME_COMPOSITION
,然后在第一个字符后,它首先命中WM_IME_COMPOSITION
,然后命中WM_CHAR
。
我已经观察到,它类型的第一个字符正确。例如,(韩国字符)在键入第二个字符。(第一个字符,第二个字符,第一个字符)。
1条答案
按热度按时间cotxawn71#
我已经设法解决了这个问题,我写在这里是为了帮助别人。请让我知道,如果有任何错误的代码。
首先检查语言是否是韩语或其他语言,所以如果是韩语,你必须处理它不同.
你必须得到开始和结束组合的信息,你必须总是检查它是否是字符或组合的延续。一旦你在
WndProc
中得到组合的结束,就将mIsImeProcessed
设置为true
,将mIsImeContinue
设置为false
。我们也需要处理退格键的情况。