Главная страницаОбратная связьКарта сайта

Как сгенерировать нажатие левой кнопкой мыши, когда нажата правая?



Public Declare Function CallWindowProc Lib "user32" _
Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hwnd As Long, _
ByVal Msg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Public Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Public Const GWL_WNDPROC = (-4)

Declare Function SendMessageBynum Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_RBUTTONUP = &H205

Public glngPrevWndProc As Long

Dim wp As Long, lp As Long

Public Function MyWindowProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
' Если правая кнопка мыши отпущена после нажатия...
If Msg = WM_RBUTTONUP Then
wp = wParam
lp = lParam
' Дважды щёлкнуть левой кнопкой мыши
SendMessageBynum hwnd, WM_LBUTTONDOWN, wp, lp
SendMessageBynum hwnd, WM_LBUTTONUP, wp, lp
SendMessageBynum hwnd, WM_LBUTTONDBLCLK, wp, lp
SendMessageBynum hwnd, WM_LBUTTONUP, wp, lp
' Показывать всплывающее меню
If Form1.Option1(1) Then
MyWindowProc = 0
Exit Function
End If
End If
' остальные сообщения передаются для обработки стандартной
' процедуре окна
MyWindowProc = CallWindowProc(glngPrevWndProc, hwnd, Msg, wParam, lParam)
End Function

'Использование: Создайте форму и поместите на неё текстовое поле и 2 радио-кнопки с индексами, равными 0 и 1

Private Sub Form_Load()
Dim l As Long
' Перенаправление сообщений Windows от формы к собственной
' процедуре обработки сообщений Module1.MyWindowProc
glngPrevWndProc = GetWindowLong(Text1.hwnd, GWL_WNDPROC)
SetWindowLong Text1.hwnd, GWL_WNDPROC, AddressOf MyWindowProc
End Sub

Private Sub Form_Unload(Cancel As Integer)
' Возвращение управления форме
SetWindowLong Text1.hwnd, GWL_WNDPROC, glngPrevWndProc
End Sub


Обсудить статью на форуме


Если Вас заинтересовала или понравилась информация программирование на Visual Basic - "Как сгенерировать нажатие левой кнопкой мыши, когда нажата правая?", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2017 Дискета.info