我有一个特例,当用户第一次通过我IME
上的按字母KeyCode
键入Grid UserControl
时,如何在IME窗口上选择Unicode
?如果用户输入英文,则可以。但如果用户在IME上键入中文或日文,则Unicode
会变成问号。
Select Case uMsg
Case WM_IME_SETCONTEXT
If Not wParam = 0 Then
Dim flag As Boolean
flag = ImmAssociateContextEx(lng_hWnd, 0, 16)
If flag Then
Dim IntPtr As Long
IntPtr = ImmGetContext(lng_hWnd)
flag = ImmSetOpenStatus(IntPtr, True)
End If
End If
Case WM_IME_STARTCOMPOSITION
Dim hIMC As Long
hIMC = ImmGetContext(lng_hWnd)
Dim cf As COMPOSITIONFORM
cf.dwStyle = 2
cf.ptCurrentPos.X = UserControl1.ScaleLeft + 3
cf.ptCurrentPos.Y = UserControl1.ScaleTop + UserControl1.Height - 16
ImmSetCompositionWindow hIMC, cf
Case WM_IME_CHAR
'Send IME Char to UserControl1.KeyPress
UserControl1_KeyPress(wParam And &HFFFF&)
Exit Sub
End Select
答案 0 :(得分:0)
在我使用Krool的不同Subclasser之后,现在我可以获得Right Unicode。不确定为什么Paul Caton和LaVolpe cSelfSubHookCallBack不起作用。
Subclasser可能在内部将Unicode转换为ANSI或无法阻止Windows从UNICODE转换为ANSI。