Автор Тема: GUICtrlEvent - обработка событий мыши  (Прочитано 4125 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1517
  • Репутация: 405
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
На форуме достаточно примеров по обработке событий мыши но решил показать ещё один
пример, более простой  :)

Функции обработки событий я включил в отдельный Include файл для удобства, так как их
всего 2, то и UDF собирать ни к чему.

GUICtrlEvent.au3
(нажмите для показа/скрытия)

И пример с картинками в архиве.

Русское сообщество AutoIt

GUICtrlEvent - обработка событий мыши
« Отправлен: Июнь 29, 2012, 01:55:06 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827
  • Репутация: 2287
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: GUICtrlEvent - обработка событий мыши
« Ответ #1, Отправлен: Июнь 29, 2012, 02:15:35 »
Неплохо.
Но оно не будет работать если в одном из Case будет задержка (например MsgBox).


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827
  • Репутация: 2287
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: GUICtrlEvent - обработка событий мыши
« Ответ #2, Отправлен: Июнь 29, 2012, 02:23:13 »
Да кстати, в данном варианте было бы неплохо сделать что то типа этого:

Код: AutoIt [Выделить]
While 1
    Switch _GUIGetMsgEx()
        Case $GUI_EVENT_CLOSE
            ...
        Case $GUI_EVENT_NORMAL
            ...
        Case $GUI_EVENT_HOVER
            ...
        Case $GUI_EVENT_PRESSED
            ...
    EndSwitch
Wend

Func _GUIGetMsgEx($iFlag = 0)
    Local $vMsg = GUIGetMsg($iFlag)
    Local $iID = $vMsg
    If $iFlag <> 0 Then $iID = $vMsg[0]
   
    Local $iCtrlEvent = GUICtrlGetEvent($iID)
    If $iCtrlEvent <> 0 Then Return $iCtrlEvent
    Return $vMsg
EndFunc


Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1517

  • Автор темы
  • Репутация: 405
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: GUICtrlEvent - обработка событий мыши
« Ответ #3, Отправлен: Июнь 29, 2012, 02:28:35 »
Цитировать
Но оно не будет работать если в одном из Case будет задержка (например MsgBox).

Конечно не очень хорошо будет, но для простых вариантов кода наверное вполне сойдёт, на счёт примера, собирал на быструю руку, тут уже кто как хочет может написать, но я с Вами согласен, с _GUIGetMsgEx было бы лучше  :)

Русское сообщество AutoIt

Re: GUICtrlEvent - обработка событий мыши
« Ответ #3 Отправлен: Июнь 29, 2012, 02:28:35 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827
  • Репутация: 2287
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: GUICtrlEvent - обработка событий мыши
« Ответ #4, Отправлен: Июнь 29, 2012, 03:01:16 »
Viktor1703  [?]
Цитировать
на счёт примера, собирал на быструю руку
Ну тут видимо одним изменением примера не обойтись, возможно нужно будет немного переписать функции обработки.

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1517

  • Автор темы
  • Репутация: 405
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: GUICtrlEvent - обработка событий мыши
« Ответ #5, Отправлен: Июнь 29, 2012, 03:17:52 »
Тоесть сделать их через DllCallbackRegister ?

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827
  • Репутация: 2287
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: GUICtrlEvent - обработка событий мыши
« Ответ #6, Отправлен: Июнь 29, 2012, 03:19:47 »
Viktor1703  [?]
Цитировать
Тоесть сделать их через DllCallbackRegister ?
Или через Adlib, для упрощения.

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1517

  • Автор темы
  • Репутация: 405
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: GUICtrlEvent - обработка событий мыши
« Ответ #7, Отправлен: Июнь 29, 2012, 03:28:03 »
Но такое у меня уже есть  :)

Русское сообщество AutoIt

Re: GUICtrlEvent - обработка событий мыши
« Ответ #7 Отправлен: Июнь 29, 2012, 03:28:03 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827
  • Репутация: 2287
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: GUICtrlEvent - обработка событий мыши
« Ответ #8, Отправлен: Июнь 29, 2012, 03:29:52 »
В идеале, это должно было быть так (если бы это встроили нативно):

Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>

$hGUI = GUICreate("")
$iButton = GUICtrlCreateButton("Button", 20, 20)
GUISetState(@SW_SHOW, $hGUI)

While 1
    $aMsg = GUIGetMsg(1) ;0 - Default, 1 - Advanced (!!! including hovering info)
   
    Switch $aMsg[0]
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GUI_EVENT_HOVER
            ConsoleWrite('Hovered control: ' & $aMsg[5] & @LF) ;$aMsg[5] - Added element (Hovered CtrlID)
        Case $GUI_EVENT_UNHOVER
            ConsoleWrite('UnHovered control: ' & $aMsg[6] & @LF) ;$aMsg[6] - Added element (UnHovered CtrlID)
        Case $GUI_EVENT_PRESSED
            ConsoleWrite('Pressed/PrimaryDown control: ' & $aMsg[7] & @LF) ;$aMsg[7] - Added element (Pressed/PrimaryDown CtrlID)
        Case $GUI_EVENT_UNPRESSED
            ConsoleWrite('UnPressed/PrimaryUp control: ' & $aMsg[8] & @LF) ;$aMsg[8] - Added element (UnPressed/PrimaryUp CtrlID)
        Case $iButton ;Button event
           
    EndSwitch
WEnd

« Последнее редактирование: Июль 01, 2012, 03:10:53 от CreatoR »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827
  • Репутация: 2287
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: GUICtrlEvent - обработка событий мыши
« Ответ #9, Отправлен: Июнь 29, 2012, 03:43:34 »
Немного подправил “абстракцию”, т.с объект мечтаний :muttley:

Русское сообщество AutoIt

Re: GUICtrlEvent - обработка событий мыши
« Ответ #9 Отправлен: Июнь 29, 2012, 03:43:34 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
4164 Просмотров
Последний ответ Апрель 25, 2011, 12:55:24
от DemkaDV
5 Ответов
10758 Просмотров
Последний ответ Июнь 27, 2011, 08:38:25
от RUVATA
5 Ответов
4193 Просмотров
Последний ответ Апрель 23, 2013, 13:14:21
от chymax3m
5 Ответов
3211 Просмотров
Последний ответ Сентябрь 23, 2013, 22:40:41
от sngr
2 Ответов
1051 Просмотров
Последний ответ Ноябрь 10, 2014, 16:21:19
от WSWR
0 Ответов
861 Просмотров
Последний ответ Август 28, 2015, 20:20:15
от sokolovska
2 Ответов
769 Просмотров
Последний ответ Ноябрь 17, 2015, 10:08:39
от Medic84
11 Ответов
3404 Просмотров
Последний ответ Апрель 08, 2016, 12:38:01
от InnI
1 Ответов
1996 Просмотров
Последний ответ Март 09, 2017, 14:07:21
от Alofa
1 Ответов
277 Просмотров
Последний ответ Ноябрь 16, 2017, 21:27:01
от Николай86