2015-01-07 1 views
0

У меня есть специальный случай, когда пользователь сначала печатает через 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 

enter image description here

+0

Я использовал lngdwSize = ImmGetCompositionString (hIMC, GCS_RESULTREADSTR, 0, 0), но размер всегда равен нулю. Есть идеи? – Jonney

+0

После того, как я использую другого субкласса от Krool, теперь я могу получить правый Юникод. Не знаю, почему Paul Caton и LaVolpe cSelfSubHookCallBack не работают. – Jonney

ответ

0

После того как я использовать различные Subclasser от Krool, теперь я могу получить право Unicode. Не знаю, почему Paul Caton и LaVolpe cSelfSubHookCallBack не работают.

Подкласс может внутренне превратить Unicode в ANSI или не смог предотвратить переход Windows из UNICODE в ANSI.

Смежные вопросы