Viktor1703
AutoIT Гуру
- Сообщения
- 1,535
- Репутация
- 413
На форуме достаточно примеров по обработке событий мыши но решил показать ещё один
пример, более простой
Функции обработки событий я включил в отдельный Include файл для удобства, так как их
всего 2, то и UDF собирать ни к чему.
GUICtrlEvent.au3
И пример с картинками в архиве.
пример, более простой
Функции обработки событий я включил в отдельный Include файл для удобства, так как их
всего 2, то и UDF собирать ни к чему.
GUICtrlEvent.au3
Код:
#cs
$__aMouseEvent[0][0] = Count controls
$__aMouseEvent[id][0] = Id control
$__aMouseEvent[id][1] = Window handle
$__aMouseEvent[id][2] = Hover event
$__aMouseEvent[id][3] = Pressed event
$__aMouseEvent[id][4] = Control over the cycle
$__aMouseEvent[id][5] = Blocking of the remaining events
#ce
Global Const $GUI_EVENT_NORMAL = 0x100
Global Const $GUI_EVENT_HOVER = 0x200
Global Const $GUI_EVENT_PRESSED = 0x300
Global $__aMouseEvent[1][6] = [[0, 0, 0, 0, 0, 0]]
Func GUICtrlSetEvent($hWnd, $iCtrl)
$__aMouseEvent[0][0] += 1
ReDim $__aMouseEvent[$__aMouseEvent[0][0] + 1][Ubound($__aMouseEvent, 2)]
$__aMouseEvent[$__aMouseEvent[0][0]][0] = $iCtrl
$__aMouseEvent[$__aMouseEvent[0][0]][1] = $hWnd
$__aMouseEvent[$__aMouseEvent[0][0]][2] = False
$__aMouseEvent[$__aMouseEvent[0][0]][3] = False
$__aMouseEvent[$__aMouseEvent[0][0]][4] = False
$__aMouseEvent[$__aMouseEvent[0][0]][5] = False
Return $__aMouseEvent[0][0]
EndFunc
Func GUICtrlGetEvent($id)
Local $__aInfo = GUIGetCursorInfo($__aMouseEvent[$id][1])
If ((Not @error) And IsArray($__aInfo)) Then
If ($__aInfo[4] = $__aMouseEvent[$id][0]) Then
If ($__aInfo[2] And ($__aMouseEvent[$id][5] <> $__aMouseEvent[$id][0])) Then
Return 0
EndIf
$__aMouseEvent[$id][5] = $__aMouseEvent[$id][0]
If ((Not $__aMouseEvent[$id][2]) And (Not $__aInfo[2])) Then
$__aMouseEvent[$id][2] = True
$__aMouseEvent[$id][4] = True
Return $GUI_EVENT_HOVER
EndIf
If $__aInfo[2] Then
If (Not $__aMouseEvent[$id][3]) Then
$__aMouseEvent[$id][3] = True
$__aMouseEvent[$id][4] = True
Return $GUI_EVENT_PRESSED
EndIf
Else
If $__aMouseEvent[$id][3] Then
$__aMouseEvent[$id][3] = False
$__aMouseEvent[$id][4] = True
ControlClick($__aMouseEvent[$id][1], '', $__aMouseEvent[$id][0])
Return $GUI_EVENT_HOVER
EndIf
EndIf
Else
If $__aMouseEvent[$id][3] Then
$__aMouseEvent[$id][3] = False
Return $GUI_EVENT_HOVER
EndIf
If ($__aMouseEvent[$id][4] And (Not $__aInfo[2])) Then
$__aMouseEvent[$id][2] = False
$__aMouseEvent[$id][3] = False
$__aMouseEvent[$id][4] = False
$__aMouseEvent[$id][5] = False
Return $GUI_EVENT_NORMAL
EndIf
EndIf
EndIf
EndFunc
И пример с картинками в архиве.