Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Зависание скрипта при _Hover_Func

Ответить
Настройки темы
[решено] Зависание скрипта при _Hover_Func

Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


Вложения
Тип файла: zip GUICtrlOnHover.zip
(5.4 Kb, 3 просмотров)
Код: Выделить весь код
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include "GUICtrlOnHover.au3"
#Region Main form
$hMain_GUI = GUICreate("Главное окно", 300, 200)
$Label = GUICtrlCreateLabel("Настройки", 10, 170, 70, 20)
_GUICtrl_OnHoverRegister($Label, "_Hover_Func", "_Hover_Func")
$nExit_Btn = GUICtrlCreateButton("Выход", 90, 170, 70, 20)
GUISetState(@SW_SHOW, $hMain_GUI)
#EndRegion Main form

#Region Settings form
$hStngs_GUI = GUICreate("Настройки", 400, 200)
$nStngs_Ok_Btn = GUICtrlCreateButton("ОК", 10, 170, 80, 25)
$nStngs_Close_Btn = GUICtrlCreateButton("Закрыть", 310, 170, 80, 25)
#EndRegion Settings form



While 1
    $aMsg = GUIGetMsg(1) ;Расширенная обработка событий

    Switch $aMsg[0]
        Case $GUI_EVENT_CLOSE, $nExit_Btn, $nStngs_Close_Btn
            Switch $aMsg[1]
                Case $hMain_GUI  ;Событие поступило от главного окна - завершаем работу скрипта
                    Exit
                Case $hStngs_GUI ;Событие поступило от окна настроек - закрываем его
                    GUISetState(@SW_HIDE, $hStngs_GUI)
            EndSwitch
        Case $Label
            GUISetState(@SW_SHOW, $hStngs_GUI)
    EndSwitch
WEnd

Func _Hover_Func($iCtrlID, $iParam)
	Local $sConsole_Data = "Hovered"
	
	Local $sButton_Text = "Hover Button"
	Local $iLabel_Color = 0x00000FF
	Local $iLabel_FontAttrib = 4
	Local $iCheckBox_State = $GUI_CHECKED
	Local $sEdit_Data = "New Edit Data"
	
	If $iParam = 2 Then ;Indicates On *Leave* Hover process
		$sConsole_Data = "NOT Hovered"
		
		$sButton_Text = "Button"
		$iLabel_Color = 0x000000
		$iLabel_FontAttrib = 0
		$iCheckBox_State = $GUI_UNCHECKED
		$sEdit_Data = "Edit Data"
	EndIf
	
	Printf("Control " & $iCtrlID & " [Data: " & GUICtrlRead($iCtrlID, 1) & "] Is Now " & $sConsole_Data)
	
	Switch $iCtrlID
		Case $Button
			If GUICtrlRead($iCtrlID) <> $sButton_Text Then GUICtrlSetData($iCtrlID, $sButton_Text)
		Case $Label
			GUICtrlSetColor($iCtrlID, $iLabel_Color)
			GUICtrlSetFont($iCtrlID, Default, Default, $iLabel_FontAttrib)
		Case $CheckBox
			GUICtrlSetState($iCtrlID, $iCheckBox_State)
		Case $Edit
			If GUICtrlRead($iCtrlID) <> $sEdit_Data Then GUICtrlSetData($iCtrlID, $sEdit_Data)
	EndSwitch
EndFunc

Func Printf($Str, $Line=@ScriptLineNumber)
	ConsoleWrite("!===========================================================" & @LF & _
				"+======================================================" & @LF & _
				"--> Script Line (" & $Line & "):" & @LF & "!" & @TAB & $Str & @LF & _
				"+======================================================" & @LF)
EndFunc
Собственно сабж, скрипт просто виснет

Отправлено: 16:20, 25-03-2011

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Вообще то сначала нужно проверять скрипт на ошибки синтаксиса, а потом писать что скрипт виснет.
Конечно он виснет, ошибка гинерируется внутри callback-функций, это один из (мелких я бы сказал) недостатков обработчика ошибок в AutoIt.

В скрипте проверяется $Button, $CheckBox и $Edit, которые нигде не объявлены.

Код: Выделить весь код
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include "GUICtrlOnHover.au3"

#Region Main form
$hMain_GUI = GUICreate("Главное окно", 300, 200)
$Label = GUICtrlCreateLabel("Настройки", 10, 170, 55, 20)
GUICtrlSetFont($Label, 8.5, 400, 0)
_GUICtrl_OnHoverRegister($Label, "_Hover_Func", "_Hover_Func")
$nExit_Btn = GUICtrlCreateButton("Выход", 90, 170, 70, 20)
GUISetState(@SW_SHOW, $hMain_GUI)
#EndRegion Main form

#Region Settings form
$hStngs_GUI = GUICreate("Настройки", 400, 200)
$nStngs_Ok_Btn = GUICtrlCreateButton("ОК", 10, 170, 80, 25)
$nStngs_Close_Btn = GUICtrlCreateButton("Закрыть", 310, 170, 80, 25)
#EndRegion Settings form


While 1
    $aMsg = GUIGetMsg(1) ;Расширенная обработка событий

    Switch $aMsg[0]
        Case $GUI_EVENT_CLOSE, $nExit_Btn, $nStngs_Close_Btn
            Switch $aMsg[1]
                Case $hMain_GUI  ;Событие поступило от главного окна - завершаем работу скрипта
                    Exit
                Case $hStngs_GUI ;Событие поступило от окна настроек - закрываем его
                    GUISetState(@SW_HIDE, $hStngs_GUI)
            EndSwitch
        Case $Label
            GUISetState(@SW_SHOW, $hStngs_GUI)
    EndSwitch
WEnd

Func _Hover_Func($iCtrlID, $iParam)
    Local $sConsole_Data = "Hovered"
    Local $iLabel_Color = 0x00000FF
    Local $iLabel_FontAttrib = 4
    Local $iLabel_CursorID = 0

    If $iParam = 2 Then ;Indicates On *Leave* Hover process
        $sConsole_Data = "NOT Hovered"

        $iLabel_Color = 0x000000
        $iLabel_FontAttrib = 0
        $iLabel_CursorID = -1
    EndIf

    Printf("Control " & $iCtrlID & " [Data: " & GUICtrlRead($iCtrlID, 1) & "] Is Now " & $sConsole_Data)

    Switch $iCtrlID
        Case $Label
            GUICtrlSetColor($iCtrlID, $iLabel_Color)
            GUICtrlSetFont($iCtrlID, 8.5, 400, $iLabel_FontAttrib)
            GUICtrlSetCursor($iCtrlID, $iLabel_CursorID)
    EndSwitch
EndFunc

Func Printf($Str, $Line=@ScriptLineNumber)
    ConsoleWrite("!===========================================================" & @LF & _
                "+======================================================" & @LF & _
                "--> Script Line (" & $Line & "):" & @LF & "!" & @TAB & $Str & @LF & _
                "+======================================================" & @LF)
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:54, 25-03-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Кстати, в данном случае наверное будет лучше использовать _GUICtrlHyperlink для ссылки, и возможностей больше.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:13, 25-03-2011 | #3


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Centrinar,
А что такое Засисание...
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:53, 25-03-2011 | #4


Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


Как сделать фон прозрачным GUISetBkColor ($iCtrlID, $GUI_BKCOLOR_TRANSPARENT) не помогает

Отправлено: 20:25, 25-03-2011 | #5


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Цитата Centrinar:
Как сделать фон прозрачным »
Если я правильно Вас понял:
Код: Выделить весь код
#include <GUIConstantsEx.au3>

$hGui = GUICreate('Test', 220, 100)
GUISetBkColor(0xE0FFFF)
$nSlider = GUICtrlCreateSlider(10, 10, 200, 20)
GUICtrlSetLimit(-1, 255, 55)
GUICtrlSetData($nSlider, 255)
GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $nSlider
            WinSetTrans($hGui, '', GUICtrlRead($nSlider))
    EndSwitch
WEnd
PS
Лучше было бы в новой теме вопрос задать.

Последний раз редактировалось madmasles, 25-03-2011 в 20:56.


Отправлено: 20:51, 25-03-2011 | #6


Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


фон лайбла

Отправлено: 20:58, 25-03-2011 | #7


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Centrinar:
Как сделать фон прозрачным »
При чём тут эта тема?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 21:36, 25-03-2011 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Зависание скрипта при _Hover_Func

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Пауза при выполнении скрипта zavoruev Скриптовые языки администрирования Windows 7 14-09-2010 15:12
Установка - [решено] Зависание при установке - 0% при распаковке и ни с места SirDrake Microsoft Windows 7 14 12-12-2009 22:38
выполнение скрипта при ПЕРВОМ входе пользователя tojlst9lk Microsoft Windows NT/2000/2003 1 16-03-2009 20:12
Запуск скрипта при подключении к сети Neu-iskatell Сетевые технологии 7 31-10-2005 16:09
Ошибка при работе скрипта Rudy Вебмастеру 18 13-10-2004 06:52




 
Переход