问:在子类中如何判断用户按了S键的同时,按了SHIFT键?
Private Function WndProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If uMsg = WM_CHAR OR UMSG=WM_KEYDOWN Then
           .........
           
    End If
END FUNCTION 

解决方案 »

  1.   

    Modifiers = MOD_SHIFT
        uVirtKey = vbKeyS
        Ret = RegisterHotKey(Me.hwnd, idHotKey, Modifiers, uVirtKey)    If Msg = WM_HOTKEY Then
            If wParam = idHotKey Then
                If CInt(lParam / 65536) = vbKeyS Then
                    Debug.Print "OK"
                End If
            End If
        End If
      

  2.   

    你可能理解错误了,你这种是设置宏键,我说如何判断用户在按S键的同时,按了SHIFT,我需要把它区分出来.
      

  3.   

    Private Sub Command2_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyS And Shift = 1 Then
        Debug.Print "同时按了S键和SHIFT键组合键"
        'Shift = 1      Shift
        'Shift = 2      Ctrl
        'Shift = 4      Alt
        'Shift = 3      Shift + Ctrl
        'Shift = 5      Shift + Alt
        'Shift = 6      Ctrl + Alt
        'Shift = 7      Ctrl + Alt + Shift
    End If
    End Sub
    不知道这样行不行?
      

  4.   

    keydown事件里的shift值就是做这个用的啊.
      

  5.   

    没错。。
    有空看看MSDN吧。
      

  6.   


    chCharCode = (TCHAR) wParam;    // character code 
    lKeyData = lParam;              // key data 
    应该保存在 lparam参数中了!
    好像有一位表示!