问题如题,用一个redio button 设定输入法,当焦点落到textbox上时,输入法自动切换到rediobutton选中的输入方式中,请高手指点一下,多谢了!急用!

解决方案 »

  1.   

    module中
    Public Declare Function ImmSetConversionStatus Lib "imm32.dll" (ByVal hImc As Long, ByVal dw1 As Long, ByVal dw2 As Long) As Long
    Public Declare Function ImmSetOpenStatus Lib "imm32.dll" (ByVal hImc As Long, ByVal b As Long) As LongPublic Const IME_CMODE_NATIVE = &H1
    Public Const IME_CMODE_JAPANESE = IME_CMODE_NATIVE
    Public Const IME_CMODE_KATAKANA = &H2                   '  only effect under IME_CMODE_NATIVE
    Public Const IME_CMODE_LANGUAGE = &H3
    Public Const IME_CMODE_NOCONVERSION = &H100
    Public Const IME_CMODE_ROMAN = &H10
    Public Const IME_CMODE_FULLSHAPE = &H8Public Const IME_SMODE_PHRASEPREDICT = &H8
    form中
    Private Sub Text1_GotFocus()
        SetIME
    End SubSub SetIME()
        Dim hImc As Long
        
        hImc = ImmGetContext(Text1.hwnd)
        If optSBCHIRAKANA.Value Then
            ImmSetConversionStatus m_hImeHandle, IME_CMODE_JAPANESE + IME_CMODE_FULLSHAPE + IME_CMODE_ROMAN, IME_SMODE_PHRASEPREDICT
        ElseIf optSBCKATAKANA.Value Then
                ImmSetConversionStatus m_hImeHandle, IME_CMODE_JAPANESE + IME_CMODE_FULLSHAPE + IME_CMODE_KATAKANA + IME_CMODE_ROMAN, IME_SMODE_PHRASEPREDICT
        ElseIf optSBCEISUU.Value Then
                ImmSetConversionStatus m_hImeHandle, IME_CMODE_FULLSHAPE + IME_CMODE_NOCONVERSION, IME_SMODE_PHRASEPREDICT    ElseIf optSBCKATAKANA.Value Then
                ImmSetConversionStatus m_hImeHandle, IME_CMODE_JAPANESE + IME_CMODE_KATAKANA + IME_CMODE_ROMAN, IME_SMODE_PHRASEPREDICT    ElseIf optDBCEISUU.Value Then
                ImmSetConversionStatus m_hImeHandle, IME_CMODE_NOCONVERSION, IME_SMODE_PHRASEPREDICT
        Else
            'do nothing
        End If
    End Sub
      

  2.   

    Private Sub Text1_GotFocus()
        SetIME
    End SubSub SetIME()
        Dim hImc As Long
        
        hImc = ImmGetContext(Text1.hwnd)
        ImmSetOpenStatus hImc, True
        If optSBCHIRAKANA.Value Then
            ImmSetConversionStatus hImc, IME_CMODE_JAPANESE + IME_CMODE_FULLSHAPE + IME_CMODE_ROMAN, IME_SMODE_PHRASEPREDICT
        ElseIf optSBCKATAKANA.Value Then
            ImmSetConversionStatus hImc, IME_CMODE_JAPANESE + IME_CMODE_FULLSHAPE + IME_CMODE_KATAKANA + IME_CMODE_ROMAN, IME_SMODE_PHRASEPREDICT
        ElseIf optSBCEISUU.Value Then
            ImmSetConversionStatus hImc, IME_CMODE_FULLSHAPE + IME_CMODE_NOCONVERSION, IME_SMODE_PHRASEPREDICT
        ElseIf optSBCKATAKANA.Value Then
            ImmSetConversionStatus hImc, IME_CMODE_JAPANESE + IME_CMODE_KATAKANA + IME_CMODE_ROMAN, IME_SMODE_PHRASEPREDICT
        ElseIf optDBCEISUU.Value Then
            ImmSetConversionStatus hImc, IME_CMODE_NOCONVERSION, IME_SMODE_PHRASEPREDICT
        Else
            'do nothing
        End If
    End Sub这个是对的,刚才那个错了,如果版主看见把上个删了吧