Существует булевская переменная, запоминающая, что мышь нажали, при MouseDown и сбрасывающаяся по MouseUp. Но при быстром нажатии происходит DoubleClick вместо второго нажатия. Вот проверочный код:
- Код: Выделить всё
Option Explicit
Dim M2Pressed As Boolean
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then M2Pressed = True
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then M2Pressed = False
End Sub
Private Sub Timer1_Timer()
Caption = M2Pressed
End Sub
На форма таймер на 16 мс. Быстро нажмите, отпустите и снова нажмите правую кнопку.
Перевызов MouseDown из DoubleClick не годится, так как DoubleClick не различает нажатые кнопки. Неужели ради этой мелочи придётся прикручивать DirectInput?
Клики мимо формы меня не волнуют - это полноэкранное приложение, при потере-восстановлении фокуса состояния будут сбрасываться.