VB6.0中 有二个Form, FormA与FormB, 每个Form 有二个文本框,二个按钮.
要求:
现在不管光标在哪里
在FormA 在激活时,当按Tab,方向键上,下,左,右,分别显示a,b,c,d,e
在FormB 在激活时,当按Tab,方向键上,下,左,右,分别显示A,B,C,D,E
也就是说,在VB 中抓住 tab,方向键,虽然有些钩子方法能实现,但是它的识别键的方法是写在模块中的.我想把识别键的方法放到form中,也就是说每个Form有它自己键的定义.
请客位高手给在下,指点一下迷津.谢了.

解决方案 »

  1.   

    把form的keypreview属性设置为true,你就能在该窗体的key系列事件里处理键盘消息了
      

  2.   

    如在mdiform中可以用
    hook+activeform
    Public Function KeyboardProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        Dim lstrFlag As String
        'if idHook is less than zero, no further processing is required
        If idHook < 0 Or idHook = 3 Then
            'call the next hook
            KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
        Else
            lstrFlag = Left$(Format$(DEC_to_BIN(lParam), String(32, "0")), 1)
            If ActiveForm Is Form1 Then
                If lstrFlag = "0" Then  'down
                    If wParam = vbKeyTab Then
                        Form1.Print "Tab down ..."
                    End If
                Else    'up
                    If wParam = vbKeyTab Then
                        Form1.Print "Tab up ..."
                    End If
                End If
            End If
            'call the next hook
            KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
        End If
    End Function
      

  3.   

    以我本人的想法,沒必要用HOOK。每個控件設置tabindex屬性。
    按TAB跳轉時,每個控件有GotFocus事件。
    在那裏處理就行了。