请问各位大虾,怎样实现软键盘程序,就好象打开智能输入法里面的那个软键盘一样,我主要是在触摸屏上用的,所以那个太小了,还有输入法的切换,请各位大虾指点,先给60分,不够再给,谢了。

解决方案 »

  1.   

    输入法的切换:
    控件如果有 IMEMODE 属性则可以按照下面办法实现:
    IMEMode 属性
          该属性返回或者设置的数值用来确定被选定的对象的 IME (Input Method Editor,输入方法编辑器)状态。注意   只有 Visual Basic 的远东地区版本中才会出现该属性。object.IMEMode [= value]IMEMode 属性的语法包括以下几个部分:部分 描述 
    object 一个对象表达式,其值为“应用于”列表中的一个对象。 
    value 一个整数,它指定了将要被对象使用的 IME 模式。 
    设置值value 的设置值包括:设置 描述 
    0 无(缺省设置)。该值表明“无 IME 控制”。当 IMEMode 属性被设置为 0 时,可以使用 IMEStatus 函数确定当前的 IME 状态。 
    1 IME 打开。该数值表明 IME 已经被打开,可以输入汉字或日文字符。该设置仅对日文、简体汉字和繁体汉字 IME 有效。 
    2 IME 关闭。该模式表明 IME 被关闭,因此对象将处于英文输入模式。该设置仅对日文、简体汉字和繁体汉字 IME 有效。 
    3 IME 被禁止。该模式类似于 IMEMode = 2,区别仅在于数值 2 没有禁止 IME。在本设置下,用户不能够通过键盘将 IME 打开,而且 IME 浮动窗口被隐藏。该设置仅对日文 IME 有效。 
    4 日文平假名双字节字符(DBC)。该设置仅对日文 IME 有效。 
    5 日文片假名 DBC. 这些设置仅对日文 IME 有效。 
    6 日文片假名单字节字符 (SBC)。这些设置仅对日文 IME 有效。 
    7 字母数字 DBC。该些设置仅对日文 IME 有效。 
    8 字母数字 SBC。该些设置仅对日文 IME 有效。 
    9 Hangeul DBC。该些设置仅对朝鲜语 IME 有效。 
    10 Hangeul SBC。该些设置仅对朝鲜语 IME 有效。 
    说明在设计时,可以使用对象的“属性”窗口来设置对象的 IMEMode 属性。在运行时,可以通过代码返回或者设置 IMEMode 属性。如果对象拥有焦点的时候改变了 IMEMode 属性的设置,对象的 IME 状态将发生相应的改变。如果将 IMEMode 属性设置为 0 (无),那么无论对象的当前状态如何设置,结果总是返回 0。如果将 IMEMode 属性设置为 0 以外的任何有效值, IMEMode 属性将返回当前的 IME 状态。对于日文 IME,只能使用设置值 0 到 8。设置 9 和 10 对于日文系统是无效的。对于朝鲜语 IME,只能使用设置 0 以及 7 到 10。设置 1 到 6 对于朝鲜语系统是无效的。对于简体汉字和繁体汉字 IME,只能使用设置 0 到 2。设置 3 到 10 对于汉字系统是无效的。
    要使用软键盘,最笨的办法就是设计一个frm,上面放置多个按钮,每一个按钮点击的时候给一个KeyAscii值。
      

  2.   

    “要使用软键盘,最笨的办法就是设计一个frm,上面放置多个按钮,每一个按钮点击的时候给一个KeyAscii值”,我试了,好象不行,不知道是那里错了,我目的是通过软键盘输入中英文,显示在特定的文本控件,请高手指点,先谢了。
      

  3.   

    做一些按钮就可以了。
    比如,按钮"A",要在text1.text中显示A
    TEXT1.TEXT=TEXT1.TEXT & "A"
    或 sendkeys 或API的keybd_event函数模拟按键,
    如按下NumLock:(两行)
      keybd_event vbKeyNumlock,0,0,0
      keybd_event vbKeyNumlock,0,2,0
     
      

  4.   

    keybd_event 可以模拟键盘操作,但就是不能显示在我特定的文本控件里,例如我想在Text1控件里显示模拟键盘按下的内容,但是我在点击时,文本已失去焦点,所以最后显示的内容(不但是数字字母,还有中文)不会出现在Text1里面,不知道是那里没设好,请高手再次指点,谢了。
      

  5.   

    对于一般可见字符,不用keybd_event,象F1,Tab,NumLock,CapsLock才用 keybd_event
    以下代码在text1.text上输入"a"
    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)Private Sub Command1_Click()
    Text1.SetFocus
    Text1.SelStart = Len(Text1.Text)
    SendKeys "a"
    End Sub