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

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

Оффлайн Afonichev [?]

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

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

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

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

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

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

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7830
  • Репутация: 2288
  • Пол: Мужской
  • 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 [?]

  • Администратор
  • *
  • Сообщений: 7830
  • Репутация: 2288
  • Пол: Мужской
  • 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 Гуру
  • *****
  • Сообщений: 1535

  • Автор темы
  • Репутация: 408
  • Пол: Мужской
    • Награды
  • Версия 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 [?]

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

Оффлайн Afonichev [?]

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

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

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7830
  • Репутация: 2288
  • Пол: Мужской
  • 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 Гуру
  • *****
  • Сообщений: 1535

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

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

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

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7830
  • Репутация: 2288
  • Пол: Мужской
  • 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 [?]

  • Администратор
  • *
  • Сообщений: 7830
  • Репутация: 2288
  • Пол: Мужской
  • 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 Ответов
4368 Просмотров
Последний ответ Апрель 25, 2011, 12:55:24
от DemkaDV
5 Ответов
11212 Просмотров
Последний ответ Июнь 27, 2011, 08:38:25
от RUVATA
5 Ответов
4364 Просмотров
Последний ответ Апрель 23, 2013, 13:14:21
от chymax3m
5 Ответов
3323 Просмотров
Последний ответ Сентябрь 23, 2013, 22:40:41
от sngr
2 Ответов
1142 Просмотров
Последний ответ Ноябрь 10, 2014, 16:21:19
от WSWR
0 Ответов
910 Просмотров
Последний ответ Август 28, 2015, 20:20:15
от sokolovska
11 Ответов
3618 Просмотров
Последний ответ Апрель 08, 2016, 12:38:01
от InnI
1 Ответов
2404 Просмотров
Последний ответ Март 09, 2017, 14:07:21
от Alofa
1 Ответов
350 Просмотров
Последний ответ Ноябрь 16, 2017, 21:27:01
от Николай86
2 Ответов
343 Просмотров
Последний ответ Ноябрь 06, 2018, 20:32:44
от xXx