MrCreatoR Posted November 21, 2007 Author Posted November 21, 2007 Jex If im use "Opt("MouseCoordMode", 0)" script not work trueJust add this to the top line of the function _ControlGetHovered(): Local $Old_Opt_MCM = Opt("MouseCoordMode", 1) And this to the end (before Return $iRet[0]): Opt("MouseCoordMode", $Old_Opt_MCM) And all will work ok Valery works with AutoIt3 v3.2.9.13 (beta) I think that all globals and the handler function are not needed there: expandcollapse popup#include-once Opt("MustDeclareVars", 1) Opt("OnExitFunc", "CallBack_Exit") ;GUICtrlSetOnHover Initialize Global $HOVER_CONTROLS_ARRAY[1][1] Global $LAST_HOVERED_ELEMENT[2] = [-1, -1] Global $LAST_HOVERED_ELEMENT_MARK = -1 Global $pTimerProc = DllCallbackRegister("CALLBACKPROC", "none", "hwnd;uint;uint;dword") Global $uiTimer = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 10, "ptr", DllCallbackGetPtr($pTimerProc)) $uiTimer = $uiTimer[0] Opt("MustDeclareVars", 0) Func CALLBACKPROC($hWnd, $uiMsg, $idEvent, $dwTime) If UBound($HOVER_CONTROLS_ARRAY)-1 < 1 Then Return Local $ControlGetHovered = _ControlGetHovered() Local $sCheck_LHE = $LAST_HOVERED_ELEMENT[1] If $ControlGetHovered = 0 Or ($sCheck_LHE <> -1 And $ControlGetHovered <> $sCheck_LHE) Then If $LAST_HOVERED_ELEMENT_MARK = -1 Then Return If $LAST_HOVERED_ELEMENT[0] <> -1 Then Call($LAST_HOVERED_ELEMENT[0], $LAST_HOVERED_ELEMENT[1]) $LAST_HOVERED_ELEMENT[0] = -1 $LAST_HOVERED_ELEMENT[1] = -1 $LAST_HOVERED_ELEMENT_MARK = -1 Else For $i = 1 To $HOVER_CONTROLS_ARRAY[0][0] If $HOVER_CONTROLS_ARRAY[$i][0] = GUICtrlGetHandle($ControlGetHovered) Then If $LAST_HOVERED_ELEMENT_MARK = $HOVER_CONTROLS_ARRAY[$i][0] Then ExitLoop $LAST_HOVERED_ELEMENT_MARK = $HOVER_CONTROLS_ARRAY[$i][0] Call($HOVER_CONTROLS_ARRAY[$i][1], $ControlGetHovered) If $HOVER_CONTROLS_ARRAY[$i][2] <> -1 Then $LAST_HOVERED_ELEMENT[0] = $HOVER_CONTROLS_ARRAY[$i][2] $LAST_HOVERED_ELEMENT[1] = $ControlGetHovered EndIf ExitLoop EndIf Next EndIf EndFunc Func GUICtrlSetOnHover($CtrlID, $HoverFuncName, $LeaveHoverFuncName=-1) Local $Ubound = UBound($HOVER_CONTROLS_ARRAY) ReDim $HOVER_CONTROLS_ARRAY[$Ubound+1][3] $HOVER_CONTROLS_ARRAY[$Ubound][0] = GUICtrlGetHandle($CtrlID) $HOVER_CONTROLS_ARRAY[$Ubound][1] = $HoverFuncName $HOVER_CONTROLS_ARRAY[$Ubound][2] = $LeaveHoverFuncName $HOVER_CONTROLS_ARRAY[0][0] = $Ubound EndFunc ;Thanks to amel27 for that one!!! Func _ControlGetHovered() Local $Old_Opt_MCM = Opt("MouseCoordMode", 1) Local $iRet = DllCall("user32.dll", "int", "WindowFromPoint", _ "long", MouseGetPos(0), _ "long", MouseGetPos(1)) $iRet = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", $iRet[0]) Opt("MouseCoordMode", $Old_Opt_MCM) Return $iRet[0] EndFunc Func CallBack_Exit() DllCallbackFree($pTimerProc) DllCall("user32.dll", "int", "KillTimer", "hwnd", 0, "uint", $uiTimer) EndFunc Tell me please if this work, then i will put it into the first post as usage for AutoIt beta. Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team
AzKay Posted November 22, 2007 Posted November 22, 2007 Hi...i think there is a problem if it`s over an image...the leave hover dosn`t work Example: $Pic1 = GUICtrlCreatePic("pic.jpg", 95, 0, 285, 75) $Label = GUICtrlCreateLabel("Label", 186, 48, 13, 17) GUICtrlSetOnHover($Yes, "Hover_Func", "Leave_Hover_Func") Correct me if i`m wrong... BTW it`s awsome:DAwww, You were ignored xD;; Anyway, $Pic1 = GUICtrlCreatePic("pic.jpg", 95, 0, 285, 75) GUICtrlSetState(-1, $GUI_DISABLED) $Label = GUICtrlCreateLabel("Label", 186, 48, 13, 17) GUICtrlSetOnHover($Yes, "Hover_Func", "Leave_Hover_Func") # MY LOVE FOR YOU... IS LIKE A TRUCK- #
MrCreatoR Posted November 26, 2007 Author Posted November 26, 2007 Ok, the UDF in my last post work perfectly in the final AutoIt Release (on the last beta actualy, but in the final AutoIt 3.2.10.0 there was no changes since then), now it available in the first post as addition UDF for 3.2.10.0 Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team
Pascal257 Posted November 26, 2007 Posted November 26, 2007 So this works on every control that is OnEvent-able?
MrCreatoR Posted November 26, 2007 Author Posted November 26, 2007 So this works on every control that is OnEvent-able?Not only see the GuiCtrlSetOnHover - Console + GUI Demo in the archive (attached to the first post).But i think it will not work with TreeView/ListView and similar controls (items). Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team
Pascal257 Posted December 20, 2007 Posted December 20, 2007 (edited) For me it does not work on icons... I tried it on a slider and it works perfect, but the same for icons does not work It does not call the function: Func Rate_GUI() Global $RateIcon[22] Global $RateGUI = XSkinGUICreate("PPlayer - Rate", 339+$factorX*2, 234+$factorY*2, $Skin_Folder,1,25,-1,-1,-1,$MainGUI) XSkinIcon($RateGUI,3,StringSplit("RateClose|RateClose|RateHelp","|")) $nr = 0 For $x = 8 To 296 Step 32 $nr += 1 $RateIcon[$nr] = GUICtrlCreateIcon("resource\hovered.ico",-1, $x+$factorX, 120+$factorY, 32, 32, 0) GUICtrlSetOnHover($RateIcon[$nr],"RateOnHover","RateOffHover") Next For $x = 8 To 296 Step 32 $nr += 1 $RateIcon[$nr] = GUICtrlCreateIcon("resource\hovered.ico",-1, $x+$factorX, 152+$factorY, 32, 32, 0) GUICtrlSetOnHover($RateIcon[$nr],"RateOnHover","RateOffHover") Next Global $RateButton1 = GUICtrlCreateButton("Save", 104+$factorX, 192+$factorY, 113, 33, 0) GUICtrlSetOnEvent(-1,"RateSave") Global $RateLabel1 = GUICtrlCreateLabel("", 0+$factorX, 0+$factorY, 332, 116) EndFunc ;==>Rate_GUI Func RateOnHover($Control) debug("test") $Hover = True For $i = 1 To 20 If $Control == $RateIcon[$i] Then $Hover = False If $Hover Then GUICtrlSetImage($RateIcon[$i],"resource\hovered.ico") Else GUICtrlSetImage($RateIcon[$i],"resource\unhovered.ico") EndIf Next EndFunc Func RateOffHover($Control) EndFunc Any idea? Edit: nvm it works perfect... Koda adds same stupid 0's as style on Buttons... Edited December 20, 2007 by Pascal257
ChrisL Posted January 9, 2008 Posted January 9, 2008 This is very cool, thanks! [u]Scripts[/u]Minimize gui to systray _ Fail safe source recoveryMsgbox UDF _ _procwatch() Stop your app from being closedLicensed/Trial software system _ Buffering Hotkeys_SQL.au3 ADODB.Connection _ Search 2d Arrays_SplashTextWithGraphicOn() _ Adjust Screen GammaTransparent Controls _ Eventlogs without the crap_GuiCtrlCreateFlash() _ Simple Interscript communication[u]Websites[/u]Curious Campers VW Hightops Lambert Plant Hire
cal Posted March 9, 2008 Posted March 9, 2008 I just spent a couple hours trying to figure out how to do this. No luck. Then a quick search here in the forums and here it is. Very Nice. Works great. Thanks.
Lakes Posted April 30, 2008 Posted April 30, 2008 Just what I was looking for!, great work! 2015 - Still no flying cars, instead blankets with sleeves.
ProgAndy Posted April 30, 2008 Posted April 30, 2008 TH UDF has sometimes a problem with Multiple Windows. Sometimes, you can hover the Controls of one Window by pointing on some Controls on an other window. As fix, the CTRLID should be used on a very late state, and before you should use the HWND. Fixed UDf: expandcollapse popup#include-once Opt("MustDeclareVars", 1) Opt("OnExitFunc", "CallBack_Exit") ;GUICtrlSetOnHover Initialize Global $HOVER_CONTROLS_ARRAY[1][1] Global $LAST_HOVERED_ELEMENT[2] = [-1, -1] Global $LAST_HOVERED_ELEMENT_MARK = -1 Global $pTimerProc = DllCallbackRegister("CALLBACKPROC", "none", "hwnd;uint;uint;dword") Global $uiTimer = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 10, "ptr", DllCallbackGetPtr($pTimerProc)) $uiTimer = $uiTimer[0] Opt("MustDeclareVars", 0) ;=============================================================================== ; ; Function Name: GUICtrlSetOnHover() ; Description: Set function(s) to call when hovering/leave hovering GUI elements. ; Parameter(s): $CtrlID - The Ctrl ID to set hovering for (can be a -1 as indication to the last item created). ; $HoverFuncName - Function to call when the mouse is hovering the control. ; $LeaveHoverFuncName - [Optional] Function to call when the mouse is leaving hovering the control ; (-1 no function used). ; ; Return Value(s): Always returns 1 regardless of success. ; Requirement(s): AutoIt 3.2.10.0 ; Note(s): 1) TreeView/ListView Items can not be set :(. ; 2) When the window is not active, the hover/leave hover functions will still called, ; but not when the window is disabled. ; 3) The hover/leave hover functions will be called even if the script is paused by such functions as MsgBox(). ; Author(s): G.Sandler (a.k.a CreatoR). ; ;=============================================================================== Func GUICtrlSetOnHover($CtrlID, $HoverFuncName, $LeaveHoverFuncName=-1) Local $Ubound = UBound($HOVER_CONTROLS_ARRAY) ReDim $HOVER_CONTROLS_ARRAY[$Ubound+1][3] $HOVER_CONTROLS_ARRAY[$Ubound][0] = GUICtrlGetHandle($CtrlID) $HOVER_CONTROLS_ARRAY[$Ubound][1] = $HoverFuncName $HOVER_CONTROLS_ARRAY[$Ubound][2] = $LeaveHoverFuncName $HOVER_CONTROLS_ARRAY[0][0] = $Ubound EndFunc ;CallBack function to handle the hovering process Func CALLBACKPROC($hWnd, $uiMsg, $idEvent, $dwTime) If UBound($HOVER_CONTROLS_ARRAY)-1 < 1 Then Return Local $ControlGetHovered = _ControlGetHoveredHwnd() Local $sCheck_LHE = $LAST_HOVERED_ELEMENT[1] If $ControlGetHovered = 0 Or ($sCheck_LHE <> -1 And $ControlGetHovered <> $sCheck_LHE) Then If $LAST_HOVERED_ELEMENT_MARK = -1 Then Return If $LAST_HOVERED_ELEMENT[0] <> -1 Then Call($LAST_HOVERED_ELEMENT[0], _ControlGetID($LAST_HOVERED_ELEMENT[1])) $LAST_HOVERED_ELEMENT[0] = -1 $LAST_HOVERED_ELEMENT[1] = -1 $LAST_HOVERED_ELEMENT_MARK = -1 Else For $i = 1 To $HOVER_CONTROLS_ARRAY[0][0] If $HOVER_CONTROLS_ARRAY[$i][0] = $ControlGetHovered Then If $LAST_HOVERED_ELEMENT_MARK = $HOVER_CONTROLS_ARRAY[$i][0] Then ExitLoop $LAST_HOVERED_ELEMENT_MARK = $HOVER_CONTROLS_ARRAY[$i][0] Call($HOVER_CONTROLS_ARRAY[$i][1], _ControlGetID($ControlGetHovered)) If $HOVER_CONTROLS_ARRAY[$i][2] <> -1 Then $LAST_HOVERED_ELEMENT[0] = $HOVER_CONTROLS_ARRAY[$i][2] $LAST_HOVERED_ELEMENT[1] = $ControlGetHovered EndIf ExitLoop EndIf Next EndIf EndFunc Func _ControlGetID($ControlGetHovered) Local $ControlGetHoveredID = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", $ControlGetHovered) If @error Then Return Return $ControlGetHoveredID[0] EndFunc ;Thanks to amel27 for that one!!! Func _ControlGetHoveredHwnd() Local $mouse = MouseGetPos() Local $iRet = DllCall("user32.dll", "hwnd", "WindowFromPoint", _ "long", $mouse[0], _ "long", $mouse[1]) Return $iRet[0] EndFunc ;Release the CallBack resources Func CallBack_Exit() DllCallbackFree($pTimerProc) DllCall("user32.dll", "int", "KillTimer", "hwnd", 0, "uint", $uiTimer) EndFunc *GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes
sensalim Posted May 15, 2008 Posted May 15, 2008 Hm strange. It doesn't do anything on my script... I have something like ... #include "GUICtrlSetOnHover.au3" ... $gui1 = GUICreate(...) $button1 = GUICtrlCreateButton(...) GUICtrlSetOnHover($button1, "DoThis") ... Func DoThis() MsgBox(..) EndFunc
sensalim Posted May 16, 2008 Posted May 16, 2008 Well I tried the original sample code and it works. So I copied my code parts by parts and now my code works. I don't know what I did to make it not working... but now it works. ProgAndy's also works. Thanks! However, it doesn't seem to work when I put it on pic or input... Only button then?
MrCreatoR Posted May 26, 2008 Author Posted May 26, 2008 However, it doesn't seem to work when I put it on pic or input... Only button then?It works with pics also, see this example: #include <GUICtrlSetOnHover_UDF.au3> #include <GuiConstantsEx.au3> Global $Pic1 = @Systemdir & "\oobe\images\hand1.gif" Global $Pic2 = @Systemdir & "\oobe\images\hand2.gif" $Gui = GUICreate("GuiCtrlSetOnHover - Hand Demo", 280, 200) $Hand_Pic = GUICtrlCreatePic($Pic1, 55, 35, 180, 120) GUICtrlSetOnHover(-1, "Hover_Func", "Leave_Hover_Func") GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func Hover_Func($iCtrlID) Switch $iCtrlID Case $Hand_Pic GUICtrlSetImage($iCtrlID, $Pic2) EndSwitch EndFunc Func Leave_Hover_Func($iCtrlID) Switch $iCtrlID Case $Hand_Pic GUICtrlSetImage($iCtrlID, $Pic1) EndSwitch EndFunc Does it work under 3.2.12.0 ?Yes it works. Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team
Synapse Posted May 28, 2008 Posted May 28, 2008 (edited) Hi MrCreatoR i wanned to say that i`ve made some modifications to your UDF and added the 3rd state of a button. The code is below...It needs some improvement but...i didn`t had the time...Hover.rar Edited May 28, 2008 by Synapse
MrCreatoR Posted May 28, 2008 Author Posted May 28, 2008 (edited) Hi MrCreatoR i wanned to say that i`ve made some modifications to your UDF and added the 3rd state of a button. The code is below...It needs some improvement but...i didn`t had the time...Very nice, i liked the idea a lot! therfore i made an appropriate changes: Experimental version: * Added two more optional parameters; $sPrimaryDownFuncName and $sPrimaryUpFuncName. - Now you can set "onclick" as well Here is an example, the changed UDF itself and this example attached to the first post: expandcollapse popup#include <GUICtrlSetOnHover_UDF.au3> #include <GUIConstants.au3> ; Global $PlayIsClicked = False Global $sImages_Path = @ScriptDir & "\Images" $Gui = GUICreate("GuiCtrlSetOnHover - onclick Hovering Demo", 280, 200) GUISetBkColor(0xFFFFFF) $Button = GUICtrlCreatePic($sImages_Path & "\btn0.jpg", 82, 24, 82, 24) _GUICtrlSetOnHover(-1, "Hover_Func", "Leave_Hover_Func", "PrimaryDown_Func", "PrimaryUp_Func") $Round = GUICtrlCreatePic($sImages_Path & "\round0.jpg", 82, 70, 150, 24) _GUICtrlSetOnHover(-1, "Hover_Func", "Leave_Hover_Func", "PrimaryDown_Func", "PrimaryUp_Func") $Pause = GUICtrlCreatePic($sImages_Path & "\pause0.jpg", 110, 100, 40, 40) _GUICtrlSetOnHover(-1, "Hover_Func", "Leave_Hover_Func", "PrimaryDown_Func", "PrimaryUp_Func") $Play = GUICtrlCreatePic($sImages_Path & "\play0.jpg", 70, 100, 40, 40) _GUICtrlSetOnHover(-1, "Hover_Func", "Leave_Hover_Func", "PrimaryDown_Func", "PrimaryUp_Func") GUISetState() While 1 $Msg = GUIGetMsg() Switch $Msg Case $GUI_EVENT_CLOSE Exit EndSwitch If $PlayIsClicked Then $PlayIsClicked = False MsgBox(64, "", "You Clicked 'Play' Button") EndIf WEnd Func Hover_Func($iCtrlID) Switch $iCtrlID Case $Button GUICtrlSetImage($iCtrlID, $sImages_Path & "\btn1.jpg") Case $Round GUICtrlSetImage($iCtrlID, $sImages_Path & "\round1.jpg") Case $Pause GUICtrlSetImage($iCtrlID, $sImages_Path & "\pause1.jpg") Case $Play GUICtrlSetImage($iCtrlID, $sImages_Path & "\play1.jpg") EndSwitch EndFunc Func Leave_Hover_Func($iCtrlID) Switch $iCtrlID Case $Button GUICtrlSetImage($iCtrlID, $sImages_Path & "\btn0.jpg") Case $Round GUICtrlSetImage($iCtrlID, $sImages_Path & "\round0.jpg") Case $Pause GUICtrlSetImage($iCtrlID, $sImages_Path & "\pause0.jpg") Case $Play GUICtrlSetImage($iCtrlID, $sImages_Path & "\play0.jpg") EndSwitch EndFunc Func PrimaryDown_Func($iCtrlID) Switch $iCtrlID Case $Button GUICtrlSetImage($iCtrlID, $sImages_Path & "\btn2.jpg") Case $Round GUICtrlSetImage($iCtrlID, $sImages_Path & "\round2.jpg") Case $Pause GUICtrlSetImage($iCtrlID, $sImages_Path & "\pause2.jpg") Case $Play GUICtrlSetImage($iCtrlID, $sImages_Path & "\play2.jpg") ;$PlayIsClicked = True EndSwitch EndFunc Func PrimaryUp_Func($iCtrlID) Switch $iCtrlID Case $Button GUICtrlSetImage($iCtrlID, $sImages_Path & "\btn1.jpg") Case $Round GUICtrlSetImage($iCtrlID, $sImages_Path & "\round1.jpg") Case $Pause GUICtrlSetImage($iCtrlID, $sImages_Path & "\pause1.jpg") Case $Play GUICtrlSetImage($iCtrlID, $sImages_Path & "\play1.jpg") $PlayIsClicked = True EndSwitch EndFunc Works with 3.2.8.1/3.2.10.0/3.2.12.0, but for the two last can be (and needs to be) changed due to native CallBacks implementation. BTW, the PrimaryDown/Up functions called even when you continueing to hovering the controls, until you decide where you want it Edited May 28, 2008 by MrCreatoR Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team
Wooltown Posted May 29, 2008 Posted May 29, 2008 I tried to use it on a TreeViewItem, but no success, nothing happens, isn't it possible or am I doing something wrong ? expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <TreeViewConstants.au3> #include <StaticConstants.au3> #include "GUICtrlSetOnHover_UDF.au3" Opt('MustDeclareVars', 1) Example() Func Example() Local $treeview, $generalitem, $displayitem, $aboutitem, $compitem Local $useritem, $resitem, $otheritem, $startlabel, $aboutlabel Local $compinfo, $togglebutton, $infobutton, $statebutton, $cancelbutton Local $msg, $item, $text, $hItem GUICreate("My GUI with treeview", 350, 215) $treeview = GUICtrlCreateTreeView(6, 6, 100, 150, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE) $generalitem = GUICtrlCreateTreeViewItem("General", $treeview) GUICtrlSetColor(-1, 0x0000C0) $displayitem = GUICtrlCreateTreeViewItem("Display", $treeview) GUICtrlSetColor(-1, 0x0000C0) $aboutitem = GUICtrlCreateTreeViewItem("About", $generalitem) $compitem = GUICtrlCreateTreeViewItem("Computer", $generalitem) $useritem = GUICtrlCreateTreeViewItem("User", $generalitem) $resitem = GUICtrlCreateTreeViewItem("Resolution", $displayitem) $otheritem = GUICtrlCreateTreeViewItem("Other", $displayitem) GUICtrlSetOnHover($otheritem, "_ShowTrackComment", "_DontShowTrackComment") $startlabel = GUICtrlCreateLabel("TreeView Demo", 190, 90, 100, 20) $aboutlabel = GUICtrlCreateLabel("This little scripts demonstates the using of a treeview-control.", 190, 70, 100, 60) GUICtrlSetState(-1, $GUI_HIDE) ; Hides the "aboutlabel"-text during initialization $compinfo = GUICtrlCreateLabel("Name:" & @TAB & @ComputerName & @LF & "OS:" & @TAB & @OSVersion & @LF & "SP:" & @TAB & @OSServicePack, 120, 30, 200, 80) GUICtrlSetState(-1, $GUI_HIDE) ; Hides the "compinfo"-text during initialization GUICtrlCreateLabel("", 0, 170, 350, 2, $SS_SUNKEN) $togglebutton = GUICtrlCreateButton("&Toggle", 35, 185, 70, 20) $infobutton = GUICtrlCreateButton("&Info", 105, 185, 70, 20) $statebutton = GUICtrlCreateButton("Col./Exp.", 175, 185, 70, 20) $cancelbutton = GUICtrlCreateButton("&Cancel", 245, 185, 70, 20) GUICtrlSetState($generalitem, BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) ; Expand the "General"-item and paint in bold GUICtrlSetState($displayitem, BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) ; Expand the "Display"-item and paint in bold GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $cancelbutton Or $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $togglebutton ; Toggle the bold painting If BitAND(GUICtrlRead($generalitem), $GUI_DEFBUTTON) Then GUICtrlSetState($generalitem, 0) GUICtrlSetState($displayitem, 0) Else GUICtrlSetState($generalitem, $GUI_DEFBUTTON) GUICtrlSetState($displayitem, $GUI_DEFBUTTON) EndIf Case $msg = $infobutton $item = GUICtrlRead($treeview) ; Get the controlID of the current selected treeview item If $item = 0 Then MsgBox(64, "TreeView Demo", "No item currently selected") Else $text = GUICtrlRead($item, 1); Get the text of the treeview item If $text == "" Then MsgBox(16, "Error", "Error while retrieving infos about item") Else MsgBox(64, "TreeView Demo", "Current item selected is: " & $text) EndIf EndIf Case $msg = $statebutton $item = GUICtrlRead($treeview) If $item > 0 Then $hItem = GUICtrlGetHandle($item) DllCall("user32.dll", "int", "SendMessage", "hwnd", GUICtrlGetHandle($treeview), "int", $TVM_EXPAND, "int", $TVE_TOGGLE, "hwnd", $hItem) EndIf ; The following items will hide the other labels (1st and 2nd parameter) and then show the 'own' labels (3rd and 4th parameter) Case $msg = $generalitem GUIChangeItems($aboutlabel, $compinfo, $startlabel, $startlabel) Case $msg = $aboutitem GUICtrlSetState($compinfo, $GUI_HIDE) GUIChangeItems($startlabel, $startlabel, $aboutlabel, $aboutlabel) Case $msg = $compitem GUIChangeItems($startlabel, $aboutlabel, $compinfo, $compinfo) EndSelect WEnd GUIDelete() EndFunc ;==>Example Func GUIChangeItems($hidestart, $hideend, $showstart, $showend) Local $idx For $idx = $hidestart To $hideend GUICtrlSetState($idx, $GUI_HIDE) Next For $idx = $showstart To $showend GUICtrlSetState($idx, $GUI_SHOW) Next EndFunc ;==>GUIChangeItems Func _ShowTrackComment() Local $l_CursorInfo $l_CursorInfo = GUIGetCursorInfo ($TimeReporterGUI) Tooltip("test",$l_CursorInfo[0],$l_CursorInfo[0]) EndFunc Func _DontShowTrackComment() Tooltip("") EndFunc
MrCreatoR Posted May 29, 2008 Author Posted May 29, 2008 (edited) I tried to use it on a TreeViewItem, but no success, nothing happens, isn't it possible or am I doing something wrong ?No, it's not will work on TreeView / ListView items.In the UDF description i mention that:Note(s):1) TreeView/ListView Items can not be set .2) When the window is not active, the hover/leave hover functions will still called, but not when the window is disabled.3) The hover/leave hover functions will be called even if the script is paused by such functions as MsgBox(). Edited May 29, 2008 by MrCreatoR Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team
Synapse Posted May 29, 2008 Posted May 29, 2008 Nicely done....but with my example is much more simplier and u don`t need 4 functions to create the three states...and even in the while loop with ur example it would grow to big....
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now