如何在光标移到DataCombo控件时激活输入法为中文像TEXT控件可以把IMEMODE=1来进行设置但DataCombo控件好像没这个属性.

解决方案 »

  1.   

    是不是和text控件的IMEMode属性一样?
      

  2.   

    Option Explicit    '打开VB后选择标准的EXE文档,在Form1上添加一个Combobox和一个command控件,输入以下程序。
        ''以下的API函数用于输入法操作
    Private Declare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, lpList As Long) As Long
        Private Declare Function ImmGetDescription Lib "imm32.dll" _
        Alias "ImmGetDescriptionA" (ByVal hkl As Long, _
        ByVal lpsz As String, ByVal uBufLen As Long) As Long
        Private Declare Function ImmIsIME Lib "imm32.dll" (ByVal hkl As Long) As Long
        Private Declare Function ActivateKeyboardLayout Lib "user32" _
        (ByVal hkl As Long, ByVal flags As Long) As Long
        Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
        Private Declare Function GetKeyboardLayoutName Lib "user32" Alias _
        "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
        Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" _
        (ByVal pwszKLID As String, ByVal flags As Long) As Long
        Const KLF_REORDER = &H8
        Private NoOfKBDLayout As Long, i As Long, j As Long
        Private hKB(24) As Long, BuffLen As Long
        Private Buff As String
        Private RetStr As String
        Private RetCount As Long
        Private kln As String
        Dim hCurKBDLayoutPrivate Sub Command1_Click()
            Dim res
            If Combo1.ListIndex = -1 Then ''如果用户尚未选择输入法,显示出错信息
            MsgBox "请先选择一个输入法"
            Exit Sub
            End If
            '改变输入法顺序
            kln = String(8, 0)
            ActivateKeyboardLayout hKB(Combo1.ListIndex), 0
            res = GetKeyboardLayoutName(kln)
            res = LoadKeyboardLayout(kln, KLF_REORDER)
            ActivateKeyboardLayout hCurKBDLayout, 0
        End Sub
        
        Private Sub Form_Load()
            Dim NoOfKBDLayout, BuffLen
            Buff = String(255, 0)
            hCurKBDLayout = GetKeyboardLayout(0) '取得目前的输入法
            NoOfKBDLayout = GetKeyboardLayoutList(25, hKB(0)) '取得所有输入法
            'ReDim layoutlist(NoOfKBDLayout) As String
            For i = 1 To NoOfKBDLayout
            If ImmIsIME(hKB(i - 1)) = 1 Then '中文输入法
            BuffLen = 255
            RetCount = ImmGetDescription(hKB(i - 1), Buff, BuffLen)
            RetStr = Left(Buff, RetCount)
            Combo1.AddItem RetStr
            Else
            RetStr = "English (American)" '英文输入法
            Combo1.AddItem RetStr
            End If
            Next
            ActivateKeyboardLayout hCurKBDLayout, 0 '恢复原来的输入法
        End Sub看看这个有用没有
      

  3.   

    能否这样:光标移到某个datacombo控件中时,根据设置打开中文输入法或者关闭中文输入法即如果原来是中文输入法,移到这个控件中时,如果设置是中文输入法,则不变。如果设置是英文输入法则自动切换为英文输入法上面的方法只能切换为指定的输入法,而只要求进行中英文输入法切换即可,这个控件没有IMEMODE属性200分求救!!!!