Jump to content

Recommended Posts

Posted

So i got this GUI, which has a button in form of a picture, now i would like that incase i mouseover the button, it changes to another picture, to get that hover effect.

 

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 294, 265, 665, 290)
$Pic1 = GUICtrlCreatePic("GUI\picture1.bmp", 48, 144, 193, 97)
$Label1 = GUICtrlCreateLabel("Standard text label..", 96, 16, 98, 17)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd


To clairfy:

Whenever i mouseover $pic1 i would like $pic1 to change from "picture1" to "picture2" and once i remove my mouse i would like to switch back to "picture1"

I've been looking for something like this, but have been unable to find anything useful.

Posted

Try this:

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 294, 265, 665, 290)
$Pic1 = GUICtrlCreatePic("GUI\picture1.bmp", 48, 144, 193, 97)
$Label1 = GUICtrlCreateLabel("Standard text label..", 96, 16, 98, 17)
GUISetState(@SW_SHOW)

Global $fHover = False

While 1
    $nMsg = GUIGetMsg()
    $aInfo = GUIGetCursorInfo($Form1)
    If Not @error Then $idHover = $aInfo[4]
    If $idHover = $Pic1 Then
        GUICtrlSetImage($Pic1, 'THE_OTHER.BMP')
        $fHover = True
    Else
        If $fHover Then
            $fHover = False
            GUICtrlSetImage($Pic1, 'GUI\picture1.bmp')
        EndIf
    EndIf
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd

 

Best Regards BugFix  

Posted

Instead of tracking the mouse over an image you could set an image list for a button.

#include <GDIPlus.au3>
#include <GUIConstants.au3>
#include <GuiButton.au3>
#include <GuiImageList.au3>

HotKeySet("{F1}", ToggleDisable)

_GDIPlus_Startup()

;~ Global $hImageListExample = CreateImageListFromMemory(Normal(), Hot(), Pressed(), Disabled())
Global $hImageListExample = CreateImageListFromImages(@ScriptDir & "\Normal.jpg", @ScriptDir & "\Hot.jpg", @ScriptDir & "\Pressed.jpg", @ScriptDir & "\Disabled.jpg")

Global $hMain = GUICreate("Example", 200, 100)
Global $btnExample = GUICtrlCreateButton("", 68, 10, 64, 64)
GUICtrlCreateLabel("Press F1 to enable/disable the button", 10, 80)

_GUICtrlButton_SetImageList(GUICtrlGetHandle($btnExample), $hImageListExample, 4)

GUISetState(@SW_SHOW, $hMain)

While (True)
    Switch (GUIGetMsg())
        Case $GUI_EVENT_CLOSE
            _GDIPlus_Shutdown()
            _GUIImageList_Destroy($hImageListExample)
            Exit 0
        Case $btnExample
            MsgBox("", "Pressed", "Button pressed")
    EndSwitch
WEnd

Func ToggleDisable()
    Local Static $bEnable = True
    $bEnable = Not $bEnable
    GUICtrlSetState($btnExample, ($bEnable ? $GUI_ENABLE : $GUI_DISABLE))
EndFunc

Func CreateImageListFromImages($sNormal, $sHot = "", $sPresed = "", $sDisabled = "")
    Local $hTmpBitmap = _GDIPlus_BitmapCreateFromFile($sNormal)
    If (@error) Then Return SetError(2, 0, 0)
    Local $hListReturn = _GUIImageList_Create(_GDIPlus_ImageGetWidth($hTmpBitmap), _GDIPlus_ImageGetHeight($hTmpBitmap))
    If ($hListReturn = 0) Then Return SetError(1, _GDIPlus_BitmapDispose($hTmpBitmap), ConsoleWrite("[Error] Could not create image list." & @CRLF))

    Local $hBitmapNormal = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hTmpBitmap)
    Local $hBitmapHot = Null
    Local $hBitmapPressed = Null
    Local $hBitmapDisabled = Null

    _GDIPlus_BitmapDispose($hTmpBitmap)

    If ($sHot = "") Then
        $hBitmapHot = $hBitmapNormal
    Else
        $hTmpBitmap = _GDIPlus_BitmapCreateFromFile($sHot)
        $hBitmapHot = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hTmpBitmap)
        _GDIPlus_BitmapDispose($hTmpBitmap)
    EndIf
    If ($sPresed = "") Then
        $hBitmapPressed = $hBitmapNormal
    Else
        $hTmpBitmap = _GDIPlus_BitmapCreateFromFile($sPresed)
        $hBitmapPressed = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hTmpBitmap)
        _GDIPlus_BitmapDispose($hTmpBitmap)
    EndIf
    If ($sDisabled = "") Then
        $hBitmapDisabled = $hBitmapNormal
    Else
        $hTmpBitmap = _GDIPlus_BitmapCreateFromFile($sDisabled)
        $hBitmapDisabled = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hTmpBitmap)
        _GDIPlus_BitmapDispose($hTmpBitmap)
    EndIf
    If (_GUIImageList_Add($hListReturn, $hBitmapNormal) = -1) Then ConsoleWrite("[Error] Error adding normal bitmap to list." & @CRLF)
    If (_GUIImageList_Add($hListReturn, $hBitmapHot) = -1) Then ConsoleWrite("[Error] Error adding hot bitmap to list." & @CRLF)
    If (_GUIImageList_Add($hListReturn, $hBitmapPressed) = -1) Then ConsoleWrite("[Error] Error adding pressed bitmap to list." & @CRLF)
    If (_GUIImageList_Add($hListReturn, $hBitmapDisabled) = -1) Then ConsoleWrite("[Error] Error adding disabled bitmap to list." & @CRLF)
    For $i = 4 To 6
        _GUIImageList_Add($hListReturn, $hBitmapNormal)
    Next
    _WinAPI_DeleteObject($hBitmapNormal)
    _WinAPI_DeleteObject($hBitmapHot)
    _WinAPI_DeleteObject($hBitmapPressed)
    _WinAPI_DeleteObject($hBitmapDisabled)
    Return $hListReturn
EndFunc

Func CreateImageListFromMemory($xStringNormal, $xStringHot = "", $xStringPressed = "", $xStringDisabled = "")
    Local $hTmpBitmap = _GDIPlus_BitmapCreateFromMemory($xStringNormal)
    If (@error) Then Return SetError(2, 0, 0)
    Local $hListReturn = _GUIImageList_Create(_GDIPlus_ImageGetWidth($hTmpBitmap), _GDIPlus_ImageGetHeight($hTmpBitmap))
    If ($hListReturn = 0) Then Return SetError(1, _GDIPlus_BitmapDispose($hTmpBitmap), ConsoleWrite("[Error] Could not create image list." & @CRLF))

    Local $hBitmapNormal = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hTmpBitmap)
    Local $hBitmapHot = _GDIPlus_BitmapCreateFromMemory(($xStringHot = "" ? $xStringNormal : $xStringHot), True)
    Local $hBitmapPressed = _GDIPlus_BitmapCreateFromMemory(($xStringPressed = "" ? $xStringNormal : $xStringPressed), True)
    Local $hBitmapDisabled = _GDIPlus_BitmapCreateFromMemory(($xStringDisabled = "" ? $xStringNormal : $xStringDisabled), True)
    _GDIPlus_BitmapDispose($hTmpBitmap)
    If (_GUIImageList_Add($hListReturn, $hBitmapNormal) = -1) Then ConsoleWrite("[Error] Error adding normal bitmap to list." & @CRLF)
    If (_GUIImageList_Add($hListReturn, $hBitmapHot) = -1) Then ConsoleWrite("[Error] Error adding hot bitmap to list." & @CRLF)
    If (_GUIImageList_Add($hListReturn, $hBitmapPressed) = -1) Then ConsoleWrite("[Error] Error adding pressed bitmap to list." & @CRLF)
    If (_GUIImageList_Add($hListReturn, $hBitmapDisabled) = -1) Then ConsoleWrite("[Error] Error adding disabled bitmap to list." & @CRLF)
    For $i = 4 To 6
        _GUIImageList_Add($hListReturn, $hBitmapNormal)
    Next
    _WinAPI_DeleteObject($hBitmapNormal)
    _WinAPI_DeleteObject($hBitmapHot)
    _WinAPI_DeleteObject($hBitmapPressed)
    _WinAPI_DeleteObject($hBitmapDisabled)
    Return $hListReturn
EndFunc   ;==>CreateImageListFromMemory

;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2015-01-20

Func Disabled()
    Local $Disabled
    $Disabled &= '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'
    $Disabled &= 'KuBHjqAAl7jE6BmA5k8AQUDPCcIt7SgAs+eofc3HqvMAWyD0Hd+5+h8EIL6ARAhm2E29ANbbToKhNxQeAMvIXQOh/LsaAAA45kW4Y7uLAHqxslvGVFbhAeAh/BhQfVleWQA3IZixoyusFRBwseMoQVMGYDkAseg6UDXCcJsAe0W1nTlD7m4APVeBWyCP0r2A27t9DuQXUKJdAA/NsJt7qjT4ACoTcVHuo4C8AAdD+XY0HvCsACbez21mzlFzAHRxwHArZBHFAFT1Y/3N9DhxBCC2QBM//9k='
    $Disabled = _WinAPI_Base64Decode($Disabled)
    Local $tSource = DllStructCreate('byte[' & BinaryLen($Disabled) & ']')
    DllStructSetData($tSource, 1, $Disabled)
    Local $tDecompress
    _WinAPI_LZNTDecompress($tSource, $tDecompress, 2019)
    $tSource = 0
    Local Const $bString = Binary(DllStructGetData($tDecompress, 1))
    Return $bString
EndFunc   ;==>Disabled

Func Hot()
    Local $Hot
    $Hot &= 'ZbsA/9j/4QAYRXgAaWYAAElJKgAECAAHAP/sABFEAHVja3kAAQAEBQA8PABI4QMvaHQAdHA6Ly9ucy4AYWRvYmUuY28AbS94YXAvMS4AMC8APD94cGEAY2tldCBiZWcAaW49Iu+7vyIAIGlkPSJXNU0AME1wQ2VoaUgAenJlU3pOVGMAemtjOWQiPz4AIDx4OnhtcG0AZXRhIHhtbG6gczp4PSICXDoACxEBFi8iIAIidGs9BCJBARggWE1QIABDb3JlIDUuNgAtYzExMSA3OQAuMTU4MzI1LAAgMjAxNS8wOQAvMTAtMDE6MaAwOjIwIAQAIgBtgHJkZjpSREYEawmABj0iBGp3d3cuAHczLm9yZy8xADk5OS8wMi8yBDItgBAtc3ludEBheC1ucyOFIEQAZXNjcmlwdGkIb24ggQdhYm91mHQ9IoBUA2FtcAYrk5KVCBRNTRsVbW2GFjBzdFJlh1eSFnNUAHlwZS9SZXNvUHVyY2UAFyMBHnAAOkNyZWF0b3IQVG9vbIWiUGhvAHRvc2hvcCBDAkNCTSAoV2luZBBvd3MpwgxNTToASW5zdGFuY2UQSUQ9IkAELmlpAGQ6RTI1MzVEADE3NzJBMjExAEU2QjI3QkJEAEY5RTE3MTM2BDk4xQ5Eb2N1bahlbnTFDmTHDjjWDgOBg0MPZXJpdmVkIEZyb20ggj06aa3XIjXXIsMOZNciNtYO+i8AIy8Me4UEQJCBAoauUwADBr9lbkC8coC2/4juAA6CWgBkwIDQAAH/2wCEAAYEAAQEBQQGBQUGBAkGwAALCAYGCAALDAoKCwoKDAQQDAIAEAwODxAADw4MExMUFBOAExwbGxscHwYAAAEHBwcNDA0YABAQGBoVERUaA0cGJAD/wAARCAAAQABAAwERAAIAEQEDEQH/xAAAkgABAQEAAwEBJ4AHAAgCAwQFB4ACwALoAgAFBgECAAcDBBAAAgECgAUCBAUDBAPiAgIBwQUAEUEGByEAMRIiMhNRcYEAQiNhcoLwkVIAFFOzFREAAQMgAgEKBQSFDAEAAAIDEQQGMUFRBGGx4QUF8CGBogDikcHhUnHRYiCh/9oADCAFAhEAAxEAPwDS+BAArAhWBCNOV+UAiHbUL2i0OssAf5V879GSlVgAdGYdjIR1VT8AubpkGXXt708AhbzbFY4ZwwYA8ImmFIB79Q8A86T6DzqR08QA3LMV+ijst5kAAl6jXKCY5BYApVR/2DUa9/gA4xZXu/wu5toAvTE+GDakzQgArCco/X47Eo4AGSilYEKwIVgBAA9GfK/LEO3IAJ7PZ3WW/SL+AEk6MtKrDozDALGQj0rp3OgKAOvb3p8LebYrACwxhg3ZE0wpAAD3/HSfQZyCAN4343ue9Lk9AMLg8iWhJC1ZAFrEmSeQnxMiADNnmxz8zafPAAttLR0xqeVWAPiDEEXboxHGAAGWnC3M0aTqANAzr2cocYVmANOu/wDZsxdrADtIHRlJ9ylkAM8wpI+3P0t9AA/E7XlmYjvNAOXYvnw5iNl8AM6M1OtT0eP7ANI8BD4m5Yj3AARJZry4jvUSAOUMx6LUqNf0AJBqNe4x99leAPU4Xc21SWJ8ADBtSZoRWE5RAPr8diT8MlFqAMCFYEIx5Y5ZAItuxSWezOstAPZFyllGTLSqAMO50MhHpXTuBHQF5SqeGMMG7AHhKmQfv8dJ9BoAQYcbca3LedwAWuNxeRLOkhYAq6tiTJPITmwAiMe7E+ptPngAW2loZjU8u1UAriDEMfb4+nEA0MtOFuZo0n4Aw+y0rQUFFb4AjhoqKFaekp0AQkMKDJVUYoUArQ0UGRccnncAyvL3nec7KVwA6mmp6qnkpqkAjWanmUpLE4AAysrDIgg4yQAAihWscjmODmkAo4ZCs4cn8ZUAbtGuF4sxkNkA2kDRyKT7lLIAE+VWYdcs/S0A9O+J+8szEd4Aby7F1/DmImUA+zozU61PPQ8AHjKPskfiblYAi3DB'
    $Hot &= 'HZ7xIqUA8iXKOU5KKlUAR3A/5Mu4HfsAjDCyveoN13MAbVIYnwybRxkAoRWE5v1/Gj4AiTcMVGIw5Z4AWI9uxyWWzuEA77Iv5Ze60qsADME6GQg5qNMAudAVt7e9PhYA82xWmF8MG7IAJphSAZB+/wAAHT9BqMeMuN4At3pcZLhXyOsAaIZT/u1BbOUAmlOTtGpOZ8QAfFmzH4/HC60ALQzGp5VaYiwAQM7dGI4wOqQAcIzNGSv9BaUAqGho6Cjho6MQhWClgWMlaDFCANaGigyLjk0zAOV5e87znZSuAPxsvJWBC6qqAJaarppaapiWAGp5lKSxOAysAKwyIIOMEAihAFvHI5jg5po4AGQrN/J3GVftABrxeLR7jWYyAAeKdCfcpZPFATAT1Az9DfTvlgBz95aGI7zeXQCLsGHMRR38fQAZqdanmMzxqwDuEk8U8rwbigAUtF3kWK+RrgBRuclWpUarpwCMarr3GuGFlQDok4Xc21R2JgDDDrQmWEVhPgDfxr+q58q8VQBPuWna6WqNYQC+xL5gMlWpUQD2vp4/8W+h0wAs3tkJBvN5tgCtcM4mdZu6UgCawH2/xq0j6ACF9lb1vex74wCwjcweP27jbQCTNfF4Tkeh9ADIuh/v0wnt7gAdC7aF0XvHaACHuUA8xWlWPAB48wVp/b24bQB7gtUNztkolgCaUfyVh3RxowAMUkUrXt3m5ABcWv7GW1lMUgCKOH/dY1L6WAD0XxqwIXnr6wDorfRTVtbMtAD0lOpeaZzkqgCjGrnBoqci9QCCB8rwxg3nOwAgWauSeSrlvADuK263LIlnWQACUlIoJkqJCQDJXdV7sT6V0wDnieu7szGg5UDaux4fw9EALpIAUMtOJ2Zo0D4A5+yUOJuJ49sAkSXm8Isl+kUA/HH0ZaVWGRUABHQyEHJm07AA1JZWVl0+J3MAbFFYnxObsmEghNIBlP5wIgPUAOgJuGKjEa8rAPFUO5IHutqRAmNAE2Xoq1KqPQAsdHy9JPyOFwje2XVBE6scM4kIjZuEQRO6/wCNACPVDOyd7XvZABe3yR/9dm9uBONuVRO66H6YUQBvcOhdtC6J3gA7PB3KEeY3sgCx48eYK0/YLwD2u/WqG522YQA1NMP5K33I4wBGXUYo4pWvbgDzci4rfWMtrACmKQUcPFRqXgCbhcKK3UU1dQB0y09JTqXmmQDOSqo/roMbOQXxEvH3EqeR+SLnAL0uSW+3pIloAEkC0dEoJknkACfCruq55sc/ACrp88T13dumADQcq7Jh/D8XAG6MySEGWnE7ADNGgatJzpS4CKOJ4QAT4vCLLQEFEx1VT2MhHqag07DpmWYFExgFEwDv+OgepzAJmABio1WBCsCEZwDK/FEO44Hu9gCUEV8iXN4x0QBqVH2n4OPtOgD2P6Lr2y6g3gBvNtVlhjExtABwilNYT7fxpAB6oc2Pvi87JgD2/kZqUv7dxgDe+a5+E5HIHyBLrocKbTAmtWcAC6F3ns0PcocALxUqx3jKCvcA8jcj3Te1zSgAKCORLSkgShoAFATJNIT4Vd0AVz8Ttn5VHb4AfXG91dumdQcALmC+XsHYIu0Q0RkkIAMhNWk5ANKvFHE8O2oUALvd0WW/yr5EAOjJSqw6qp7GAEI6Mw/avTMsAM7Ky6fE7m2KABsTYnN4TDCaAEA9+s/50D1PQJ0AS8MVHNFvKwACFYEIy5Y4ogAdwxSXi0RrHQDyNc5Yxkq1KgCjsdPcGh17HQAwuvbIScTebQCqzwxic2hEMwAawnJ/n8al2QDFPFEG2YUu1wBkWbcEq+VejACUqsMiiHsZCADo7j9q9My2bACshGN53NsWmACbE7rxxii8oAAfV+s6tA9T50BA1JwwUerhYf8A2Q=='
    $Hot = _WinAPI_Base64Decode($Hot)
    Local $tSource = DllStructCreate('byte[' & BinaryLen($Hot) & ']')
    DllStructSetData($tSource, 1, $Hot)
    Local $tDecompress
    _WinAPI_LZNTDecompress($tSource, $tDecompress, 3117)
    $tSource = 0
    Local Const $bString = Binary(DllStructGetData($tDecompress, 1))
    Return $bString
EndFunc   ;==>Hot

Func Normal()
    Local $Normal
    $Normal &= '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'
    $Normal &= 'AN6J6h1CMsDFABfKfE/jfy/2AIptXa9/OymkAMliISP/AN7pADxd3/MVB78+AGaOUmlOzby9AMfoB3niTy/sAKKUOivzzy95AP1g/UeJPjZ/AGV1OPHsR7CWACwgt2bY8UReAEABXQo42saGALRY0LqcUTY2AIYwWNHgFsrNAGxVSlhes2r1EKe1dQNEItQaxQDsDgQRaCsJIwBr2lrha0rl+wCvakjCyBNheQAYJYFLik+VpgDjyBI9dDQCrwBJdlXYkduH7QA7eBXL67Q35ACfixW4VvjxaQDbwKU7P3hbyQCiwprBMgo+LAB5C6B1H27ikABRq0JxhyGyTwB16U6f1AMyBABSmyUd1/RZbgD9oWspbMuGoQAyCDmByF0DoQD7djXtZowzAwDWzdIO69ZagwBPtzTcSMWTDgDv89eqC4HOzwDAZBj4n+vj4QAqK3Ljw5HXRgAURp9QkycnTwC5u3FBaXVJcgATeG7wc07biABdYxuSiZKGkgDiv52n/EHqpAB0Iro2VzTJ2AAew2grrGTzkQDmYxJGbWnaxQDqr6F9SqlLVACJFiNYe/fcWwCzbHk7tyAArAAkkaxpc42NCwBc0zI2l7zY0QDiVy3dG6ZWcghIjRhQNgWbI48AlcbjwDMBqewAK57Vas/Nv9AAy3Dt3DntwC4AWVutyZ5/oZYA4Vu4cXHmf4AAlmztnLjEWdMAQGyDD4rqLQIANB9j1PsPVHQAWiiAYknye28ASzT2nxlgJZcRQUNnyHVxIlt4bQAEyltpkNQuQQAHMaC6B0P27ARo/VIRz5B3XosAag0+M0MSPdMADuv5INgc9PwABPb4t/UT4yoCMyAR0OjCiVPqABJk5On3N24oADUuqS5CU/j9As0BER2RiZGHbgBcVw9q4PcHqgCR0Iro2WzLJgBgew2grrOTzQDHmIxJGbWnawAK2yZNiNYeRACHFuzbHk7toAAVnLK2Npc42ADQts0zImF7zQCNHiVyzdG6JQDnZSxoyssIMAAWLAHFrjE8AwAwGpPQVz6q1QRfm7AP+i3cOJ0AuAXK61W5M9IAehgOHb9LeLgA8z15BLtn7OQAxaLNmqHyLD4AK6iyD0H27n0Ah6pKLRRlxiQAm+X238z5DqsgtP6eGVD2EFVIAFKlVKVUpFd4AGz0ydtpsMBJCOg+SzQR9WqMJ0gYke4wEYrqMBEjABYt0o7r0IwGAH52BnnkTaLeADJjNy48OXswAKJ06oSZOTp9AM3bihFKqsuQAJf+fubtxXo3AD7nl56WseOrACwwwEeOBxZ2ADyDMBqx6DpWAPqtVfm3+ltvAKLdw4m/kF9NAGq1JnpAxgOHEG/S3iRQDA4JfgDP2cmLRZs1QxDkXHxXMFqDu3cAPsPVLRqKMuMAEk3yntv5nyEA1X6f08MqMWUA3zHtv5nyHMowqkKUqoJkQlFnpgBJGmwlC5BR8wJRUC+/27GjtaoAKJxiR/J7r0UANQafGZBliFkAKO69Z7P2fbwAVbEyYA+SccgAaiyD+lft3b0Ah65UaijLj1sBQWfmfIdc9P6fABlRiSb5j29BANeZ8hutJUUgAEoVUpVSl//Z'
    $Normal = _WinAPI_Base64Decode($Normal)
    Local $tSource = DllStructCreate('byte[' & BinaryLen($Normal) & ']')
    DllStructSetData($tSource, 1, $Normal)
    Local $tDecompress
    _WinAPI_LZNTDecompress($tSource, $tDecompress, 2914)
    $tSource = 0
    Local Const $bString = Binary(DllStructGetData($tDecompress, 1))
    Return $bString
EndFunc   ;==>Normal

Func Pressed()
    Local $Pressed
    $Pressed &= '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'
    $Pressed &= 'WPckK5RTAByVatVHqA6CAFA9Sjr1H0xEAC57ZO0qLzIiAMnh+P2y+iYZAcEmyYhiYSa5zwCcYtpxS7esDgCybllQfPPoywBGjjMMQdDKygBzVe3U9gZpawDbB3ZDzwgwJAA/P25/Qcl3ngDTgJpNcO8R3AB5Du011ukzrQCGnnP/AGFWWwDKaonOUjRKxwAz5N5gu56Z/QBxNLiuCjpzYQC2wPlI8o4UiQBH/AlmWjWYmQArBtttoLZQQQBvt8CUtFSoIwCCCMeKqo6ADABTjz1btZrrOgCqqmV0AILTjwAllGBC4VtFSSBdSTUdZMAmUIYAOeCQBkdGGRUAYHqCMbtuVUUAQqpMKhIrBEUASNzJw5c9h3MAF+sJlbb7Sq8ADUxk/LRTeQ8ABXYageWXg/0AdOuWdwW5cTcEv29yExwrHLxCCEHmTbAmvcIc4wBNuynjsV+lWAB3JEuUUjZKtQBqo6r2+Qe5ewD1HfKHXNbFWwBCXWRFk+n7cwT6plETa683cI0AJu+le9WSJIMAcsCksBkq1agA9j9vkHtb8HsAZa2zc1Wzq+IAdMWD6f45Zj4AiHmdWImp544AuRNx8cbkkYQATmn8/hu1omwA08vE5NofRKkA2P4OmLF6x0gAZ6kwMRGEaKwAdsQUo24aCrMANq7qsu6bJBcAmzziejnH2ZEAx6o3X2svcYoAW3+xd2rpadEACof95jkujTUACoRC9fCa2RgQELLdLnEoouNxQqhxKDJPUSFwKHMA/A749WGK3awAUUDVVVILBMMAEqP+XeX7xyAA3ZLTaUmjsCQAoShoEBMtVKQA+KSSKuZZifQAJ2++Ljt+3m8Ap7fyOQLsPNUAcKRkPE+C57oA6azASTn4N4MAodpQx7gv6LIA7mmQ/DDoyUQAjjIqpGhlYHIAdh09K9y0KucAuc7sllkwYEwA/n7ch3nIMssAOnEzTjxDEwkAQc4cIwbvppIA92ONItywJ+wAmirVoo0Rj0EAIB6WP2OmomMAbNzHZ1Bp0xYAD6ef8ZjvS7wAzqxE1PnHPI0AuPjjcUhEcn8AxGf4rtaZc18ALwOR/U+mROwAfx0xYnWOjscAUmRiNU6Kx2wAQUo24aCrM2sA7os257JT3mwA84no6gZgjRkAHHqjdfay9x8Axild9sXdq6UgpwQqHaKEE9d1ALrbrTbqi5XKgKEpaGlQyVEiE4D1kANSdBjxRxMAJIAiVH/LnLsAeeQ7xHarXHMAR2JJQlvt6AkAlqZSfFJJFXMALOxP6IOn31wAXJb9vtdObLgA4QXYearhSMgAcszxXPddNZgACSdPB/BtPtEAgjv1/jSbc8wIucUWMF/DVVIzAA0pBydx09K6AGZaEXPc53ZLECyYMD1xE+ADLACzpxM04sQ1MACMCEYEJO84cACFPu2ne+2JFgAdyQLnJEMglRBoPa30ACe/Q9gAiZWxcx2lQacATFk+n7ZjvS4A8zqxE1P/ABsA8kbh453G58FI2omkoBOpM6ETIAgfTIkQJywus9EAmepMz80I0VcAaYKUbcNBXq8ALXLd65FvMdsALZFNHY0mCW5AtqAtLUSsAQ4zAPKRs8kQZ+PQAGuZKvQOgNdOEmgpDls6oSE7eD8Ag6n2hBHfb9EApPuiZP8AHHoAOlEjjIohGYYAlIOTuP7V0zIA0Gua5zvCWWQAwYHr5n9ch3mExgDTIQxDkwhGagCc48HU+64JbwD2GJYtyRLnNABLkq1iqNA3bwCUDRW79D2ymQDbFznaEMvGLACZfr9uSXeZ1QCImuvCHB9NswCp0vl8RKjdMwin6rpxB4xxkZgAaUg5PIP7V0wAy+lzXPVvKi0ANYMD618zyyEA3nGApGWdOJkQpvYh6WIHf//Z'
    $Pressed = _WinAPI_Base64Decode($Pressed)
    Local $tSource = DllStructCreate('byte[' & BinaryLen($Pressed) & ']')
    DllStructSetData($tSource, 1, $Pressed)
    Local $tDecompress
    _WinAPI_LZNTDecompress($tSource, $tDecompress, 3140)
    $tSource = 0
    Local Const $bString = Binary(DllStructGetData($tDecompress, 1))
    Return $bString
EndFunc   ;==>Pressed

Func _WinAPI_Base64Decode($sB64String)
    Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
    Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
    $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($bBuffer, 1)
EndFunc   ;==>_WinAPI_Base64Decode

Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize)
    $tOutput = DllStructCreate("byte[" & $iBufferSize & "]")
    If @error Then Return SetError(1, 0, 0)
    Local $aRet = DllCall("ntdll.dll", "uint", "RtlDecompressBuffer", "ushort", 0x0002, "struct*", $tOutput, "ulong", $iBufferSize, "struct*", $tInput, "ulong", DllStructGetSize($tInput), "ulong*", 0)
    If @error Then Return SetError(2, 0, 0)
    If $aRet[0] Then Return SetError(3, $aRet[0], 0)
    Return $aRet[6]
EndFunc   ;==>_WinAPI_LZNTDecompress

(CreateImageListFromMemory is from a script I wrote a while back, I added the FromImages in case it was too complicated or you didn't want to use a Base64 string)

(You can turn your images to a base64 string using Uez's program from here)

Normal.jpg

Hot.jpg

Pressed.jpg

Disabled.jpg

Posted (edited)

 

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

GUICreate("", 100, 200, -1, -1)
$iPIC1 = GUICtrlCreatePic(@ProgramFilesDir & "\AutoIt3\Examples\GUI\merlin.gif", 0, 0, 100, 100)
$iPIC2 = GUICtrlCreatePic(@ProgramFilesDir & "\AutoIt3\Examples\GUI\logo4.gif", 0, 100, 100, 100)

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GUI_EVENT_MOUSEMOVE
            Local $aCursor = GUIGetCursorInfo()
            _ImageHover($iPIC1, @ProgramFilesDir & "\AutoIt3\Examples\GUI\logo4.gif", @ProgramFilesDir & "\AutoIt3\Examples\GUI\merlin.gif", $aCursor)
            _ImageHover($iPIC2, @ProgramFilesDir & "\AutoIt3\Examples\GUI\merlin.gif", @ProgramFilesDir & "\AutoIt3\Examples\GUI\logo4.gif", $aCursor)
    EndSwitch
WEnd

Func _ImageHover($iCtrl, $iIMG_1, $i_IMG2, ByRef $aCursor)
    If ($aCursor[4] = $iCtrl) Then
        GUICtrlSetImage($iCtrl, $iIMG_1)
    ElseIf ($aCursor[4] <> $iCtrl) Then
        GUICtrlSetImage($iCtrl, $i_IMG2)
    EndIf
EndFunc   ;==>_ImageHover

 

Edited by Terenz

Nothing is so strong as gentleness. Nothing is so gentle as real strength

 

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...