如何在VB6中的IME窗口上获取Unicode char?

时间:2015-01-07 14:24:48

标签: unicode vb6 ime

我有一个特例,当用户第一次通过我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

enter image description here

1 个答案:

答案 0 :(得分:0)

在我使用Krool的不同Subclasser之后,现在我可以获得Right Unicode。不确定为什么Paul Caton和LaVolpe cSelfSubHookCallBack不起作用。

Subclasser可能在内部将Unicode转换为ANSI或无法阻止Windows从UNICODE转换为ANSI。