У меня есть специальный случай, когда пользователь сначала печатает через IME
от Press Alphabetic KeyCode
на моем Grid UserControl
, как мне подобрать Unicode
на окне IME? Если пользователь печатает на английском, это нормально. Но если пользователь набирает китайский или японский язык в IME, Unicode
превращается в вопросительные знаки.Как получить символ Unicode в окне IME в VB6?
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
Я использовал lngdwSize = ImmGetCompositionString (hIMC, GCS_RESULTREADSTR, 0, 0), но размер всегда равен нулю. Есть идеи? – Jonney
После того, как я использую другого субкласса от Krool, теперь я могу получить правый Юникод. Не знаю, почему Paul Caton и LaVolpe cSelfSubHookCallBack не работают. – Jonney