Jump to content

Need GUI built from photoshop example


big_daddy
 Share

Recommended Posts

  • Moderators

I'm working on a new project and I need help with the GUI code.

Project Details:

I rely on iTunes song ratings for managing my iPhone/iPod library. My iTunes library is too large to sync to a mobile device so I only sync my favorite songs. This obviously requires the songs to be rated. I've been rating the songs in my library for a couple years, but I'm still only a quarter of the way through. The biggest problem is that I get busy and forget to rate the songs as they are playing. I searched the web for a solution and found this. It monitors your playing tracks and if the current track is not rated it prompts you to rate it. Unfortunately it is only for OS X.

I downloaded the latest iTunes COM documentation and started writing code. I've written most of the core code, but I fail when it comes to building GUIs. I do not like the dropdown style rating used by the Rate Me! Rate Me! script. I'd prefer a control where you could click any star to change the rating. I've created transparent images for each; 0, 1, 2, 3, 4, and 5 stars.

The album art will either be in JPG, PNG, or BMP format.

This is a Photoshop example of the GUI with no rating:

Posted Image

This is a Photoshop example of the GUI with 5 star rating:

Posted Image

Anyone interested in helping?

Edited by big_daddy
Link to comment
Share on other sites

Here is what i came up with, hope it helps. :)

Required Udfs:

#include <Icons.au3>

#include <GUICtrlOnHover.au3>

Edited by Guest
Link to comment
Share on other sites

Here my version:

;code by UEZ 2012
#include <gdiplus.au3>
#include <guiconstantsex.au3>
#include <memory.au3>

_GDIPlus_Startup()
Global Const $IMAGE_BITMAP = 0
Global Const $STM_SETIMAGE = 0x0172
Global Const $hGUI = GUICreate("VOTE", 258, 58)
GUISetBkColor(0xF0F0F0, $hGUI)
Global Const $idBgPic = GUICtrlCreatePic("", 16, 16, 131, 29)
GUICtrlSetState(-1, $GUI_DISABLE)
Global Const $idButton = GUICtrlCreateButton("Vote", 168, 16, 75, 25)
Global Const $Bmp_Rating = Load_BMP_From_Mem(_RatingPic(), True)
_WinAPI_DeleteObject(GUICtrlSendMsg($idBgPic, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Rating))
Global Const $Bmp_RatingStarOff = Load_BMP_From_Mem(_RatingStarOff(), True)
Global Const $Bmp_RatingStar = Load_BMP_From_Mem(_RatingStar(), True)
Global $aIDRatingStar[6], $i, $j = 0
For $i = 0 To UBound($aIDRatingStar) - 1
    $aIDRatingStar[$i] = GUICtrlCreatePic("", $j, 21, 17, 17)
    $j += 24
Next
GUISetState(@SW_SHOW)

Global $nMsg, $aCtrl, $stars = 0
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            _WinAPI_DeleteObject($Bmp_Rating)
            _WinAPI_DeleteObject($Bmp_RatingStar)
            _WinAPI_DeleteObject($Bmp_RatingStarOff)
            _GDIPlus_Shutdown()
            Exit
        Case $idButton
            MsgBox(0, "VOTE", "You have voted with " & $stars & " stars")
    EndSwitch
    $aCtrl = GUIGetCursorInfo($hGUI)
    Switch $aCtrl[4]
        Case $aIDRatingStar[0]
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[1], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[2], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[3], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[4], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[5], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            $stars = 0
        Case $aIDRatingStar[1]
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[1], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[2], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[3], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[4], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[5], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            $stars = 1
        Case $aIDRatingStar[2]
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[1], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[2], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[3], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[4], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[5], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            $stars = 2
        Case $aIDRatingStar[3]
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[1], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[2], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[3], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[4], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[5], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            $stars = 3
        Case $aIDRatingStar[4]
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[1], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[2], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[3], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[4], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[5], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            $stars = 4
        Case $aIDRatingStar[5]
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[1], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[2], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[3], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[4], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[5], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            $stars = 5
    EndSwitch
    If $aCtrl[2] Then MsgBox(0, "VOTE", "You have voted with " & $stars & " stars")
WEnd

;======================================================================================
; Function Name:    Load_BMP_From_Mem
; Description:          Loads an image which is saved as a binary string and converts it to a bitmap or hbitmap
;
; Parameters:           $bImage:    the binary string which contains any valid image which is supported by GDI+
; Optional:                 $hHBITMAP:  if false a bitmap will be created, if true a hbitmap will be created
;
; Remark:                   hbitmap format is used generally for GUI internal images, $bitmap is more a GDI+ image format
;                               Don't forget _GDIPlus_Startup() and _GDIPlus_Shutdown()
;
; Requirement(s):       GDIPlus.au3, Memory.au3 and _GDIPlus_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
; Return Value(s):  Success: handle to bitmap (GDI+ bitmap format) or hbitmap (WinAPI bitmap format),
;                               Error: 0
; Error codes:              1: $bImage is not a binary string
;                               2: unable to create stream on HGlobal
;                               3: unable to create bitmap from stream
;
; Author(s):                UEZ
; Additional Code:    thanks to progandy for the MemGlobalAlloc and tVARIANT lines and
;                               Yashied for _GDIPlus_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
; Version:                  v0.97 Build 2012-04-10 Beta
;=======================================================================================
Func Load_BMP_From_Mem($bImage, $hHBITMAP = False)
    If Not IsBinary($bImage) Then Return SetError(1, 0, 0)
    Local $aResult
    Local Const $memBitmap = Binary($bImage) ;load image  saved in variable (memory) and convert it to binary
    Local Const $len = BinaryLen($memBitmap) ;get length of image
    Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory  ($GMEM_MOVEABLE = 0x0002)
    Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
    Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
    DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
    _MemGlobalUnlock($hData) ;decrements the lock count  associated with a memory object that was allocated with GMEM_MOVEABLE
    $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
    If @error Then Return SetError(2, 0, 0)
    Local Const $hStream = $aResult[3]
    $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
    If @error Then Return SetError(3, 0, 0)
    Local Const $hBitmap = $aResult[2]
    Local $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr")
    DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, _
                                           "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak
    $tMem = 0
    $tVARIANT = 0
    If $hHBITMAP Then
        Local Const $hHBmp = _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
        _GDIPlus_BitmapDispose($hBitmap)
        Return $hHBmp
    EndIf
    Return $hBitmap
EndFunc   ;==>Load_BMP_From_Mem

Func _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
    Local $tBIHDR, $Ret, $tData, $pBits, $hResult = 0
    $Ret = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0)
    If (@error) Or ($Ret[0]) Then Return 0
    $tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $Ret[2], $Ret[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    $pBits = DllStructGetData($tData, 'Scan0')
    If Not $pBits Then Return 0
    $tBIHDR = DllStructCreate('dword;long;long;ushort;ushort;dword;dword;long;long;dword;dword')
    DllStructSetData($tBIHDR, 1, DllStructGetSize($tBIHDR))
    DllStructSetData($tBIHDR, 2, $Ret[2])
    DllStructSetData($tBIHDR, 3, $Ret[3])
    DllStructSetData($tBIHDR, 4, 1)
    DllStructSetData($tBIHDR, 5, 32)
    DllStructSetData($tBIHDR, 6, 0)
    $hResult = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBIHDR), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'dword', 0)
    If (Not @error) And ($hResult[0]) Then
        DllCall('gdi32.dll', 'dword', 'SetBitmapBits', 'ptr', $hResult[0], 'dword', $Ret[2] * $Ret[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0'))
        $hResult = $hResult[0]
    Else
        $hResult = 0
    EndIf
    _GDIPlus_BitmapUnlockBits($hBitmap, $tData)
    Return $hResult
EndFunc   ;==>_GDIPlus_BitmapCreateDIBFromBitmap


;Code was generated by: File to Base64 String Code Generator

Func _RatingPic()
    Local $Rating
    $Rating &= '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'
    $Rating &= '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'
    $Rating &= 'Xbvmo6Pr+uHhYT6fj8fj/PAKMTAUCj1+/Pj8+fPhcFgURemTTz6Bwn/++ef5+XmKBjSJ9Dzv4ODgnXfe0TTt5OQEyQdJzzCMVCq1t7fX09PDU0v3UBrb7+7u3rp1S9f1Wq2G7AJShmGMjY1ls9lYLOZrpHmfSI3O3t7ezZs30Z1iVobkCTq7u7vJZJI0wRXAg5UgCNls9tatW5qmVatVy7IglGmasVgslUrt7u729vZyNyJm+FEVLJX4QbZDLgE+u7u7PT09XCJBEMLhcLFYzGQyly9fTiaT0Zv3hGw2a5pmPp9/8uSJpmn37t1rNpuUOZFYFEWRZdk0TXSeZBSqqiqKghE33vi6UD7nUFVVVVVBEDDYIddGJQY6p15d4GU+al9Edizm26mqitDko0NrQIe6E1VVcWTC6cBgg8Eg+KHTLapoQIG6E+QVlCS+wyiwipYZi/E3GAxGIpFPP/10dnb2lVdeiUajxtv/EErDE/XHDxuNxu7u7vLy8o0bN6ampur1Oq9KMZp1HAcdAO/+qHDm732HmhTleB/HT/2o/qFvyR27T86pqfQdjOMn2IWrgXjwnTYTYzw5UdPq687IsPgDsYd5JblL92EwxbRQKKQoiqZpn3/+eSQSmZub6+/vDwaD2vU70n9Gk/Y//wPll6qqGIOkUinujL5TOd+JP7o23+H2qWcy3QNBn8D8cObUUECTOB9lXh3xcpNOn/hYm2qK7sMuUgMf6PKLAdTlcGsgxftODHlchd+HQqFQKPTZZ58FAoFXX331zJkz4XBYv3H3jxsFjeVFy7KOj49fvHjx66+/6rr+wQcfYH5CkYoPJ3y3Ongu4ghy7yEByN7/3TUL/pVPx/zaANcQgUgc+qj5AiaZvy+W+t5zj+QicFV131zhlwqIK1mWVVXd29t78OBBX1/f9PT08PCwrut03eZ/3e0wTbNare7v729ubu7s7AwODs7Pz8fj8aGhId8B78uAeCoW3Sj/5SUiLmR3CuFHgafe/OimT6UEr5up+yVl8KPcU/nvjnicArmCbdu5XG5/f//Zs2etVuvixYuTk5N9fX2+W0/++04YRlYqlXw+n8vlisXiyckJZiY82vzl1aA/ee+bkb0kke6LTPznp9L0XabqrgJeRiJfwDzVvP6EVeTtSCSSTCbPnDkzODjY398fi8XC4bDv8pn/DiCUgbEM5t4omXwZ4u/PS95aQ8RWVRUXMnVdD4fDiqIgN/zFbUzog248+G4T/Y3v/0kTVKbjzhlmTafei/0fBVOBk/9cK7YAAAAASUVORK5CYII='
    Return Binary(_Base64Decode($Rating))
EndFunc   ;==>_Ratingpng

Func _RatingStar()
    Local $RatingStar
    $RatingStar &= 'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAIAAAC0D9CtAAACq0lEQVR42i3ST2tcZRQH4N85996ZTEy0mYZEQYvGCv4hgguhaF0XP4Ab17rTRUVcudONn6EggrhQpAsrRU1WKrpQLFVqKjXWWpvEtpPJzNw7973v+57zc6Hf4Fk8sn/rwNWFEAIqgBJQ+h/ffbFx+sUIrwyuEIKCQpSkkkZSCIdl0DJhOXfNpU/eSHFemBElXUgCcHcA6iBJB90VSVSMmv/Z2XpwfXznyldkAWtBA5yW3d3M1N3hNDOSYDJm035z7fzGCWl2L0rhGULSPJFiZu6uQqVnowOZ4uYq9WFv9vXaAyiOtnLbQCr3nHPhjv94mulOCqqckkMEvv/L1uowHVs5PhyGu79ug8lhKuKeSYqIbL//7pUL71QSC0iiLyzg5KN4crNaXRmORqOfL+frN5ADTCGUxN7TL70ne3t/56PfZ9++XHEfQFnq8sCOrdxbVlVIuZ5O6lmVPcElVo+sPPcBlx+Wmzf+6vcHvaord15ZnH8PKVC6UGECLUAjmelp8fn8+Llg0oasbTef1rMmSHrqo/na64lBCCCzNJcOmjJiu/5afOLDSbB6NksxqBGxa+bzMJ1Ow4mzTVo1tCic2qlkIE/TWnro7KSZhRCS0x0KZ4leshhC3Lv6zeGdm6IEHXArMhAnB9dv7/4YQ/KYxahumnNM7GggZXLt84WKzjgfnAqbP8TeqQwrK452Lrh7LtyIRFegFBRQwo2HF/uLmA/fDic/nsX7w2Of1sffWlyC3f4MSnTuHpPFkkyZCrP27m9Lvaib58PyC8247qztlf3l9Td18MzSrVfbg6ty34YYRVTdARcUZZz8uX7my2bh2fF41LR1alPT1uPJUTc4vXZmux7tlsX/teWnS5dLdVHt9e9RFDHVOYMArZOiL2ql9nu90j2HmGiuqv8CfN39ER5WsGgAAAAASUVORK5CYII='
    Return Binary(_Base64Decode($RatingStar))
EndFunc   ;==>_RatingStarpng

Func _RatingStarOff()
    Local $RatingStarOff
    $RatingStarOff &= 'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAIAAAC0D9CtAAACOUlEQVR42lVTvU7zQBDc3bNjmTiEAEUoUJqQNgiJJmUegvejTZUXoKdC/JNgCUVCWEBQIstgmdze3ldsFPFddX8zOzezh1mWIaJzjogQ0XtvjGHmy8vLwWDgvUdEAAAA55wxxntPAKAH3nsAEBFrLTOPRiNm1k3vvYgQkS7J/xnMrOC7u7u9vb3r62tl2dTRQSKy2fXeq8jn5+d2u/3y8qJcepWZ9eYaIyKqBBHLslwsFvv7+/P5/Pf3VwEAsHkwqSQFiIhz7v7+vtFoJEmSJMlkMtlIAAB9Kp6fn4/HYxFRjiiKDg8Pj46OWq3WYrFI0/T19dVau7Hq7OwM397elsvlxcWFtRYRiaherydJEgQBMxdFUZYlMwNAHMfD4bDZbOJsNtva2gKAq6urPM81gbVuIq0vIjs7OycnJ8xcVRWmaWqMiaKoXq9Pp9PZbBYEAQD8jbLT6fR6ve/v77IsAYCstdbasizzPO92uyrPGKMuaT7dbjfP85+fH6VY94G1tqqqp6en+Xyu9ApGxM/PzzRNq6rSPNb56AwAJpNJGIbGmO3t7cFgkCQJEdVqtYeHB03ivzrOORH5+vqK47jdbvf7fefc8fHxwcFBHMfv7+/qh9oTqDOImGVZGIanp6etVmu5XDJzGIadTqfRaHx8fGRZtru7y8xEhLe3tyJijJlOp/1+P47joiiY2TmHiGEYNpvNoigeHx97vZ42Ed7c3OifqdVqRLRarbSPVIbaEEWR9361WllriegfCsrMWSv7x9MAAAAASUVORK5CYII='
    Return Binary(_Base64Decode($RatingStarOff))
EndFunc   ;==>_RatingStarOff

Func _Base64Decode($input_string)
    Local $struct = DllStructCreate("int")
    Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
    Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
    $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($a, 1)
EndFunc   ;==>_Base64Decode

Br,

UEZ

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

  • Moderators

@lesolutionneur @Mikeman27294 - It isn't that I don't know how to do it. It would just take me more time than I currently have.

@Aipion - It would have made it easier if you'd have included the UDFs in the zip. I haven't tested your code yet for that reason.

@UEZ - That is the exact implementation that I was looking for with the rating control. Great work! Would you be able to give an example for using a background image for the GUI and a custom image for a button?

Link to comment
Share on other sites

@lesolutionneur @Mikeman27294 - It isn't that I don't know how to do it. It would just take me more time than I currently have.

@Aipion - It would have made it easier if you'd have included the UDFs in the zip. I haven't tested your code yet for that reason.

@UEZ - That is the exact implementation that I was looking for with the rating control. Great work! Would you be able to give an example for using a background image for the GUI and a custom image for a button?

Is this useful?:

If not I can make another example.

Br,

UEZ

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

It is, but I'm having a hard time understanding the following line of code. Care to explain?

_WinAPI_DeleteObject(GUICtrlSendMsg($idLogo, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Logo))

GUICtrlSendMsg() function sends the image to the appropriate control id and returns a bitmap handle which will be deleted afterwards by _WinAPI_DeleteObject() function to avoid a memory leak.

Br,

UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

  • Moderators

I've made some headway, but I still have some questions.

  • How do I get rid of the border around the buttons? Made them pictures.
  • How do I allow dragging of the window? Melba23's suggestion worked.
;code by UEZ 2012
#include <gdiplus.au3>
#include <guiconstantsex.au3>
#include <memory.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>

_GDIPlus_Startup()

Global Const $IMAGE_BITMAP = 0
Global Const $STM_SETIMAGE = 0x0172
Global Const $SC_DRAGMOVE = 0xF012

Global Const $hGUI = GUICreate("", 296, 198, Default, Default, $WS_POPUPWINDOW, BitOR($WS_EX_TOPMOST, $WS_EX_LAYERED))

Global Const $idBackground = GUICtrlCreatePic("", 0, 0, 296, 198)
GUICtrlSetState(-1, $GUI_DISABLE)
Global Const $Bmp_Background = Load_BMP_From_Mem(_Background(), True)
_WinAPI_DeleteObject(GUICtrlSendMsg($idBackground, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Background))

Global Const $idArtwork = GUICtrlCreatePic("", 25, 10, 100, 100)
GUICtrlSetState(-1, $GUI_DISABLE)
Global Const $Bmp_Artwork = Load_BMP_From_Mem(_Artwork(), True)
_WinAPI_DeleteObject(GUICtrlSendMsg($idArtwork, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Artwork))

Global Const $idBgPic = GUICtrlCreatePic("", 10, 118, 131, 29)
GUICtrlSetState(-1, $GUI_DISABLE)
Global Const $Bmp_Rating = Load_BMP_From_Mem(_RatingPic(), True)
_WinAPI_DeleteObject(GUICtrlSendMsg($idBgPic, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Rating))

Global Const $idRateButton = GUICtrlCreatePic("", 10, 158, 84, 29)
Global Const $Bmp_Button_Rate = Load_BMP_From_Mem(_bnRate(), True)
_WinAPI_DeleteObject(GUICtrlSendMsg($idRateButton, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Button_Rate))

Global Const $idRatePlusButton = GUICtrlCreatePic("", 106, 158, 84, 29)
Global Const $Bmp_Button_RatePlus = Load_BMP_From_Mem(_bnRatePlus(), True)
_WinAPI_DeleteObject(GUICtrlSendMsg($idRatePlusButton, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Button_RatePlus))

Global Const $idSkipButton = GUICtrlCreatePic("", 202, 158, 84, 29)
Global Const $Bmp_Button_Skip = Load_BMP_From_Mem(_bnSkip(), True)
_WinAPI_DeleteObject(GUICtrlSendMsg($idSkipButton, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Button_Skip))

Global Const $Bmp_RatingStarOff = Load_BMP_From_Mem(_RatingStarOff(), True)
Global Const $Bmp_RatingStar = Load_BMP_From_Mem(_RatingStar(), True)
Global $aIDRatingStar[6], $i, $j = -6
For $i = 0 To UBound($aIDRatingStar) - 1
    $aIDRatingStar[$i] = GUICtrlCreatePic("", $j, 123, 17, 17)
    $j += 24
Next

GUISetState(@SW_SHOW)

Global $nMsg, $aCtrl, $stars = 0, $bClickPrevious = False
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            _CleanupAndExit()
        Case $idRateButton
            _CleanupAndExit()
        Case $idRatePlusButton
            _CleanupAndExit()
        Case $idSkipButton
            _CleanupAndExit()
        Case $GUI_EVENT_PRIMARYDOWN
            _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
    EndSwitch

    $aCtrl = GUIGetCursorInfo($hGUI)
    Switch $aCtrl[4]
        Case $aIDRatingStar[0]
            If $bClickPrevious And Not $aCtrl[2] Then ContinueCase
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[1], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[2], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[3], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[4], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[5], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            If $aCtrl[2] Then $bClickPrevious = True
            $stars = 0
        Case $aIDRatingStar[1]
            If $bClickPrevious And Not $aCtrl[2] Then ContinueCase
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[1], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[2], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[3], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[4], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[5], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            If $aCtrl[2] Then $bClickPrevious = True
            $stars = 1
        Case $aIDRatingStar[2]
            If $bClickPrevious And Not $aCtrl[2] Then ContinueCase
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[1], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[2], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[3], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[4], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[5], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            If $aCtrl[2] Then $bClickPrevious = True
            $stars = 2
        Case $aIDRatingStar[3]
            If $bClickPrevious And Not $aCtrl[2] Then ContinueCase
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[1], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[2], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[3], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[4], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[5], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            If $aCtrl[2] Then $bClickPrevious = True
            $stars = 3
        Case $aIDRatingStar[4]
            If $bClickPrevious And Not $aCtrl[2] Then ContinueCase
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[1], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[2], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[3], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[4], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[5], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStarOff))
            If $aCtrl[2] Then $bClickPrevious = True
            $stars = 4
        Case $aIDRatingStar[5]
            If $bClickPrevious And Not $aCtrl[2] Then ContinueCase
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[1], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[2], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[3], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[4], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            _WinAPI_DeleteObject(GUICtrlSendMsg($aIDRatingStar[5], $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_RatingStar))
            If $aCtrl[2] Then $bClickPrevious = True
            $stars = 5
    EndSwitch
;~   If $aCtrl[2] Then MsgBox(0, "VOTE", "You have voted with " & $stars & " stars")
WEnd

;======================================================================================
; Function Name:        Load_BMP_From_Mem
; Description:        Loads an image which is saved as a binary string and converts it to a bitmap or hbitmap
;
; Parameters:          $bImage:     the binary string which contains any valid image which is supported by GDI+
; Optional:              $hHBITMAP:   if false a bitmap will be created, if true a hbitmap will be created
;
; Remark:                  hbitmap format is used generally for GUI internal images, $bitmap is more a GDI+ image format
;
; Requirement(s):      GDIPlus.au3, Memory.au3 and _GDIPlus_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
; Return Value(s):  Success: handle to bitmap or hbitmap, Error: 0
; Error codes:        1: $bImage is not a binary string
;                              2: unable to create stream on HGlobal
;                              3: unable to create bitmap from stream
;
; Author(s):                UEZ
; Additional Code:  thanks to progandy for the MemGlobalAlloc and tVARIANT lines
; Version:                v0.97 Build 2012-01-04 Beta
;=======================================================================================
Func Load_BMP_From_Mem($bImage, $hHBITMAP = False)
    If Not IsBinary($bImage) Then Return SetError(1, 0, 0)
    Local $aResult
    Local Const $memBitmap = Binary($bImage) ;load image  saved in variable (memory) and convert it to binary
    Local Const $len = BinaryLen($memBitmap) ;get length of image
    Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory  ($GMEM_MOVEABLE = 0x0002)
    Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
    Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
    DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
    _MemGlobalUnlock($hData) ;decrements the lock count  associated with a memory object that was allocated with GMEM_MOVEABLE
    $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
    If @error Then SetError(2, 0, 0)
    Local Const $hStream = $aResult[3]
    $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
    If @error Then SetError(3, 0, 0)
    Local Const $hBitmap = $aResult[2]
    Local $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr")
    DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, _
            "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak
    $tMem = 0
    $tVARIANT = 0
    If $hHBITMAP Then
        Local Const $hHBmp = _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
        _GDIPlus_BitmapDispose($hBitmap)
        Return $hHBmp
    EndIf
    Return $hBitmap
EndFunc   ;==>Load_BMP_From_Mem

Func _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
    Local $tBIHDR, $Ret, $tData, $pBits, $hResult = 0
    $Ret = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0)
    If (@error) Or ($Ret[0]) Then Return 0
    $tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $Ret[2], $Ret[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    $pBits = DllStructGetData($tData, 'Scan0')
    If Not $pBits Then Return 0
    $tBIHDR = DllStructCreate('dword;long;long;ushort;ushort;dword;dword;long;long;dword;dword')
    DllStructSetData($tBIHDR, 1, DllStructGetSize($tBIHDR))
    DllStructSetData($tBIHDR, 2, $Ret[2])
    DllStructSetData($tBIHDR, 3, $Ret[3])
    DllStructSetData($tBIHDR, 4, 1)
    DllStructSetData($tBIHDR, 5, 32)
    DllStructSetData($tBIHDR, 6, 0)
    $hResult = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBIHDR), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'dword', 0)
    If (Not @error) And ($hResult[0]) Then
        DllCall('gdi32.dll', 'dword', 'SetBitmapBits', 'ptr', $hResult[0], 'dword', $Ret[2] * $Ret[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0'))
        $hResult = $hResult[0]
    Else
        $hResult = 0
    EndIf
    _GDIPlus_BitmapUnlockBits($hBitmap, $tData)
    Return $hResult
EndFunc   ;==>_GDIPlus_BitmapCreateDIBFromBitmap


;Code was generated by: File to Base64 String Code Generator

Func _RatingPic()
    Local $Rating
    $Rating &= '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'
    $Rating &= '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'
    $Rating &= 'Xbvmo6Pr+uHhYT6fj8fj/PAKMTAUCj1+/Pj8+fPhcFgURemTTz6Bwn/++ef5+XmKBjSJ9Dzv4ODgnXfe0TTt5OQEyQdJzzCMVCq1t7fX09PDU0v3UBrb7+7u3rp1S9f1Wq2G7AJShmGMjY1ls9lYLOZrpHmfSI3O3t7ezZs30Z1iVobkCTq7u7vJZJI0wRXAg5UgCNls9tatW5qmVatVy7IglGmasVgslUrt7u729vZyNyJm+FEVLJX4QbZDLgE+u7u7PT09XCJBEMLhcLFYzGQyly9fTiaT0Zv3hGw2a5pmPp9/8uSJpmn37t1rNpuUOZFYFEWRZdk0TXSeZBSqqiqKghE33vi6UD7nUFVVVVVBEDDYIddGJQY6p15d4GU+al9Edizm26mqitDko0NrQIe6E1VVcWTC6cBgg8Eg+KHTLapoQIG6E+QVlCS+wyiwipYZi/E3GAxGIpFPP/10dnb2lVdeiUajxtv/EErDE/XHDxuNxu7u7vLy8o0bN6ampur1Oq9KMZp1HAcdAO/+qHDm732HmhTleB/HT/2o/qFvyR27T86pqfQdjOMn2IWrgXjwnTYTYzw5UdPq687IsPgDsYd5JblL92EwxbRQKKQoiqZpn3/+eSQSmZub6+/vDwaD2vU70n9Gk/Y//wPll6qqGIOkUinujL5TOd+JP7o23+H2qWcy3QNBn8D8cObUUECTOB9lXh3xcpNOn/hYm2qK7sMuUgMf6PKLAdTlcGsgxftODHlchd+HQqFQKPTZZ58FAoFXX331zJkz4XBYv3H3jxsFjeVFy7KOj49fvHjx66+/6rr+wQcfYH5CkYoPJ3y3Ongu4ghy7yEByN7/3TUL/pVPx/zaANcQgUgc+qj5AiaZvy+W+t5zj+QicFV131zhlwqIK1mWVVXd29t78OBBX1/f9PT08PCwrut03eZ/3e0wTbNare7v729ubu7s7AwODs7Pz8fj8aGhId8B78uAeCoW3Sj/5SUiLmR3CuFHgafe/OimT6UEr5up+yVl8KPcU/nvjnicArmCbdu5XG5/f//Zs2etVuvixYuTk5N9fX2+W0/++04YRlYqlXw+n8vlisXiyckJZiY82vzl1aA/ee+bkb0kke6LTPznp9L0XabqrgJeRiJfwDzVvP6EVeTtSCSSTCbPnDkzODjY398fi8XC4bDv8pn/DiCUgbEM5t4omXwZ4u/PS95aQ8RWVRUXMnVdD4fDiqIgN/zFbUzog248+G4T/Y3v/0kTVKbjzhlmTafei/0fBVOBk/9cK7YAAAAASUVORK5CYII='
    Return Binary(_Base64Decode($Rating))
EndFunc   ;==>_RatingPic

Func _RatingStar()
    Local $RatingStar
    $RatingStar &= 'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAIAAAC0D9CtAAACq0lEQVR42i3ST2tcZRQH4N85996ZTEy0mYZEQYvGCv4hgguhaF0XP4Ab17rTRUVcudONn6EggrhQpAsrRU1WKrpQLFVqKjXWWpvEtpPJzNw7973v+57zc6Hf4Fk8sn/rwNWFEAIqgBJQ+h/ffbFx+sUIrwyuEIKCQpSkkkZSCIdl0DJhOXfNpU/eSHFemBElXUgCcHcA6iBJB90VSVSMmv/Z2XpwfXznyldkAWtBA5yW3d3M1N3hNDOSYDJm035z7fzGCWl2L0rhGULSPJFiZu6uQqVnowOZ4uYq9WFv9vXaAyiOtnLbQCr3nHPhjv94mulOCqqckkMEvv/L1uowHVs5PhyGu79ug8lhKuKeSYqIbL//7pUL71QSC0iiLyzg5KN4crNaXRmORqOfL+frN5ADTCGUxN7TL70ne3t/56PfZ9++XHEfQFnq8sCOrdxbVlVIuZ5O6lmVPcElVo+sPPcBlx+Wmzf+6vcHvaord15ZnH8PKVC6UGECLUAjmelp8fn8+Llg0oasbTef1rMmSHrqo/na64lBCCCzNJcOmjJiu/5afOLDSbB6NksxqBGxa+bzMJ1Ow4mzTVo1tCic2qlkIE/TWnro7KSZhRCS0x0KZ4leshhC3Lv6zeGdm6IEHXArMhAnB9dv7/4YQ/KYxahumnNM7GggZXLt84WKzjgfnAqbP8TeqQwrK452Lrh7LtyIRFegFBRQwo2HF/uLmA/fDic/nsX7w2Of1sffWlyC3f4MSnTuHpPFkkyZCrP27m9Lvaib58PyC8247qztlf3l9Td18MzSrVfbg6ty34YYRVTdARcUZZz8uX7my2bh2fF41LR1alPT1uPJUTc4vXZmux7tlsX/teWnS5dLdVHt9e9RFDHVOYMArZOiL2ql9nu90j2HmGiuqv8CfN39ER5WsGgAAAAASUVORK5CYII='
    Return Binary(_Base64Decode($RatingStar))
EndFunc   ;==>_RatingStar

Func _RatingStarOff()
    Local $RatingStarOff
    $RatingStarOff &= 'iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAIAAAC0D9CtAAACOUlEQVR42lVTvU7zQBDc3bNjmTiEAEUoUJqQNgiJJmUegvejTZUXoKdC/JNgCUVCWEBQIstgmdze3ldsFPFddX8zOzezh1mWIaJzjogQ0XtvjGHmy8vLwWDgvUdEAAAA55wxxntPAKAH3nsAEBFrLTOPRiNm1k3vvYgQkS7J/xnMrOC7u7u9vb3r62tl2dTRQSKy2fXeq8jn5+d2u/3y8qJcepWZ9eYaIyKqBBHLslwsFvv7+/P5/Pf3VwEAsHkwqSQFiIhz7v7+vtFoJEmSJMlkMtlIAAB9Kp6fn4/HYxFRjiiKDg8Pj46OWq3WYrFI0/T19dVau7Hq7OwM397elsvlxcWFtRYRiaherydJEgQBMxdFUZYlMwNAHMfD4bDZbOJsNtva2gKAq6urPM81gbVuIq0vIjs7OycnJ8xcVRWmaWqMiaKoXq9Pp9PZbBYEAQD8jbLT6fR6ve/v77IsAYCstdbasizzPO92uyrPGKMuaT7dbjfP85+fH6VY94G1tqqqp6en+Xyu9ApGxM/PzzRNq6rSPNb56AwAJpNJGIbGmO3t7cFgkCQJEdVqtYeHB03ivzrOORH5+vqK47jdbvf7fefc8fHxwcFBHMfv7+/qh9oTqDOImGVZGIanp6etVmu5XDJzGIadTqfRaHx8fGRZtru7y8xEhLe3tyJijJlOp/1+P47joiiY2TmHiGEYNpvNoigeHx97vZ42Ed7c3OifqdVqRLRarbSPVIbaEEWR9361WllriegfCsrMWSv7x9MAAAAASUVORK5CYII='
    Return Binary(_Base64Decode($RatingStarOff))
EndFunc   ;==>_RatingStarOff

Func _bnRate()
    Local $bnRate
    $bnRate &= 'iVBORw0KGgoAAAANSUhEUgAAAFQAAAAdCAYAAAA0PEtlAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjMwQTExQjEyNERDNjExRTE5NDUzOTcyOUI0RUEyMzI2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjMwQTExQjEzNERDNjExRTE5NDUzOTcyOUI0RUEyMzI2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzBBMTFCMTA0REM2MTFFMTk0NTM5NzI5QjRFQTIzMjYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzBBMTFCMTE0REM2MTFFMTk0NTM5NzI5QjRFQTIzMjYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz61TKYFAAAJbElEQVR42uxaWUxVRxgeLhe4vQhSjY2ihbbEYlwSXlqIqEkT45r2SdxNWNxiotEUl6T4otY1xgeNS1z6UEWNjSZ1CfrCg4rF+mBAfWkpLhCbtLFA2eFC/288/+nPzxxq00c7yeSeO2dmzj/fv//nhM3gFkc9TH049VHUU6kneuNvc+un3k29hfpv1Jup93rjfgs7wIxQz9i8eXPBqlWrCt+nlpCQkGj+b6anp6f7BbUzZ858u3fv3gs09IJ6hwQ1ToGZRP2j48ePf1VSUrK0u7vb9PX12R4XF2f6+1+vw7VlWX//kATwGrkWe4VCIX8P3tu1jtfK9a55vgip+ZpmHovFYiY+Pt75bNe+3EA31pGAmdOnT5evXbv2axr+hXoXgyolNJ766K1bt5YUFxcvbW9vN52dnT4BTCgDjI0lsHzfRSzuM5C4xi//53nywNxwjw8iQdZM1Wt57wH6KgDieXwezVwXQ3yVDodNYmKiAUb19fW/7tu37zANN3jq70soflNJuz+rrq7+ZtiwYWkAs7e3dxCxDIokTBKlpUsexnUQnucCQQPG+8h5er0ERUullRpiNu/jolFLs4t+PCcSiZjW1tam3NzcIrIClZ5t7Y8XtjRj9+7dpXl5eTldXV0WTE20lBo0EKk5KX+DuK+lV0tmEJjSVLgYKX812Np0aI2TWibPKJ/DmsrzU1JSIsnJyZEbN278QNOaMJVZDUeUOWfOnHyAScbXXySJknZQ/tfj6FevXjVjx441Y8aMsZ2vR48ebdLT0+316tWrTVNT0wAGyF+t4nIc18+fPzcLFy40EyZMsP+Z'
    $bnRate &= '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'
    $bnRate &= 'OVuGBjpDcKmvTkF1AcFVBgtSQdee2n4FAaPDKteLPFeGpcMnyVw5j98pId4lO11x//79a3S7jnoreMEv6WLeQN25c+cuUxz33vr163OxKat50LugN3lb6Hqn5AKR7aB+6SdTXtcLuyC7GWSPmblsI4NqFTobRAeg0WjUHD58uLq8vPyyADOmXyPHe1VnlIY++ZwahRf5WVlZaSHX2zNVZRryC4F/6YSGercUZFaCnvdfn63O21dXV9d05MiRKrKdUPMfkXtwyOR6Lx/2QE2n/jH1LO/rkYiXVb2tX49AfKGmndR/p/4z9Z+oN3pg+l+QxAV8hgMnleZ9jpPshVaht/zDkT4vvWzzPsNp9q57g74ckWMhD9hEAeb/3zb9DWq3B2Sf/rbpLwEGAPenHVh3ii8xAAAAAElFTkSuQmCC'
    Return Binary(_Base64Decode($bnRate))
EndFunc   ;==>_bnRate

Func _bnRatePlus()
    Local $bnRatePlus
    $bnRatePlus &= 'iVBORw0KGgoAAAANSUhEUgAAAFQAAAAdCAYAAAA0PEtlAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFGNEMzQjNBNERDNjExRTFBRUQzREQzQTUyNUQxMTM1IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFGNEMzQjNCNERDNjExRTFBRUQzREQzQTUyNUQxMTM1Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MUY0QzNCMzg0REM2MTFFMUFFRDNERDNBNTI1RDExMzUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MUY0QzNCMzk0REM2MTFFMUFFRDNERDNBNTI1RDExMzUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7bDjUvAAAJ/klEQVR42uxaWWiVRxSe3NwsjTFuWOpS01Zs3fHBNpIo2IeqCK0P7lGpTRQXEFziRuvy0Lgg6kPirilSE6MPKlK3UojgGosgdUFo0xAXLLSYPdGYm/R843/+nv/cudHSRztw+P87/yxnvrPMmTM3zkSXOKIwUReinkRpRIle/Ztc2olaiOqI/iSqJWr16gPg6d/JRP1Wrlw5df78+XPfpZKQkJBo/i/mxYsXLQ+pFBUVfb9ly5ZSqnpI1CxBjVNgJhF9sHfv3q9zc3OzW1paTFtbm6W4uDjT3v6yH96tyNrbO2SA+8i+GCsUCvlj8NiuftxX9ne181VItdc8c10kEjHx8fHOuV3jcgHf6EcKZg4dOlSycOHCfKr+neg5gxoW7eOJ3lm9enVuTk5OdlNTk3n27JnPADPKAGNgCSx/dzGL7wwk3vHk39xOLpgLvvFCJMhaqLovjx2wVwEQt+P1aOG6BMIlHA6bxMREA4wqKyv/2Lp1awFVP/LM39dQPNPIuj8tLy//LjU1tSvAbG1tjWKWQZGMSaa0dsnFuBbC7VwgaMB4HNlO95egaK20WkPC5nFcPGptdvGPeZKTk01DQ0NNRkbGV+QFyjzf2h7PwMNvbtq0KW/UqFEjnj9/bsHUTEutQQGTWpLyGUv6Wnu1ZsYCU7oKlyDlU4OtXYe2OGllco1yHrZUbt+5c+fkTp06JZ89e/Y6NatBUxY1NqL0CRMmZAFMcr5+p/z8fNOnTx/Tq1cvS7179/bfUY/fhYWF/sRMzDSY4N/8zgAx7dq1y45XUFDgC0J+l1rNdbxIPHlcFjBI1knB'
    $bnRatePlus &= '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'
    $bnRatePlus &= 'DieoZcwZK1eg36WvkicgOZY8i7uuT3QixeUDpVBkhomjDekuZPCPOXFKAmbe3RIwjLAoU4je7969+xeXLl36hkBNodgqcFZ2SVKHEfpaQgfc7HN0sllKXoLhuk9yJbN1Bl/zIgN9bTFyXGniWlByXdBaaCcpTBMdlb+lUx/yj5XY3OPFFSkC1DgKAXpMnDjxI7kDS3Bkas119+K6spAxotZOlwm6xtT+KxYwegN1XeS5LvZcvtjFE98pkWs069atO3/jxo0f6HMFUQNkwZd0Ea+iori4+AQF028vWbIkA4Oymce6C3qd20LXnZILRPaD+tKPj3is4VpgsfxmLH8sNy45Z6wrFNZWEABFdFFQUFBeUlJyQoAZ0dfI8V7WGen8jz+nQrtpVv/+/buGXLdn6p6ow38I/MtNqKO7pVhuJdZ8/3Vutd62ioqKmsLCwqvkO2HmPxNVccjkupcPe6D2JvqQqL/375Fk71T1pv57BOoLM31G9BfRb0S/Ej32wPT/QRIX4284KV6eFKmVTl5oFXrD/zjS5h0vG72/4dR6762x/jki6ziTnyjA/P+/Tf+A2uIB2ab/2/S3AAMAPb6LrA5CDj0AAAAASUVORK5CYII='
    Return Binary(_Base64Decode($bnRatePlus))
EndFunc   ;==>_bnRatePlus

Func _bnSkip()
    Local $bnSkip
    $bnSkip &= 'iVBORw0KGgoAAAANSUhEUgAAAFQAAAAdCAYAAAA0PEtlAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjExQUVCRTEyNERDNjExRTFCNzQ5QzJCQTAyMUI2RjY0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjExQUVCRTEzNERDNjExRTFCNzQ5QzJCQTAyMUI2RjY0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTFBRUJFMTA0REM2MTFFMUI3NDlDMkJBMDIxQjZGNjQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MTFBRUJFMTE0REM2MTFFMUI3NDlDMkJBMDIxQjZGNjQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6nEq8yAAAJi0lEQVR42uxaWWiVSRaue3OzTKLRRhrc2pYRbVf0ZUw0+tAIbtBvChpRNBo3FJQxboMgiBpFQTFuuDTiigjCuDW++KC2rfMSx+XB0RE10gMzahI10Zhlzlf+5+/vnlvX7mEe7YLi32o59Z21Tv0Jl1kSUlNSu0j9Umqx1Lzo/edcOqS2SG2U+m+pDVJbo/dp4NnnAql9qqqqplZWVs7+Skpubm6e+724Dx8+tDyTcvjw4aPV1dWn5NUzqc0MasKAmS/1j/v27fvL3Llzy1taWlx7e7uviUTCdXR87Id7z7KOjk8SoH24L8ZKJpPxGDp2qJ/25f6hdrEImfaWZn3X1tbmcnJygnOHxtUCutFPBMwdOnToxMKFCzfK639Kfa+gpqh9jtTuq1atmltRUVHe1NTk3r17FxOghCrAGJiB1e8hYvFdgcQ9rvqs7XjBWvBNF8IgW6bavjp2mr4SQNpO12OZG2KIllQq5fLy8hwwevz48b+2bNmyS17XReofSyiuxaLd3968efP7Tp06dQWYra2tGcQqKEwYE2WlixcTWoi2C4FgAdNxuJ3tz6BYqfRSI8zWcUI0WmkO0Y95CgoK3Js3b+pLSkrmiBW4EtnWjhwFHnZz06ZNK0pLS0e8f//eg2mJZqlBAZGWk3zNxn0rvVYys4HJpiLESL5asK3psBrHWsZr5HlUU7V9586dC4qKigouXrz4kzSrR1NlNRzR1xMnTiwDmGJ8405MFNtBfrbvlSAlora21i1YsMD16NHDde/e3fXs2dPfb9y40dXX16cx4Pbt2/4bKr4xAEzTq1evXK9evXy7'
    $bnSkip &= 'Fy9e+G/KYFTc6ztmnLZhOpkB2k/baH8eGwUCB6yAGbCLMHTJqBZPmzatTIj7Eg1D4HHVyfR7iHhte+7cOTdp0iR3/vz5DAmsqakBQU5sUVpfXqDOx0DwwkKmJKRFrDFMH8+r98w8HpvHB04QPGAG7KLwMpmKnFG3MWPGjNRGShCDyhOFbBirBqvq5s2b47Zjx451w4YN8/dXr151d+7ccU+fPnViatzevXvTGMnjMx06bnFxsVu8eLG/79KlS7xQpY0lW1XVrkXbYc1wNvrdOk6mQ9eG9xgXmAl2JadOnTqD+DQZ2c+u/fv3/5qlk7nKE7OU6BX9MDg7LFyhsgAMRaIHd+zYMbdy5Up/D8ktLy/3365du5ZhLlS6MPaTJ0/c0KFDXZ8+ffwVbaDme/bs8Yx4+fKln+/ChQtOHKtvc/z4cd8ez7ju3r07bWxeo4LHmoB59VkrM1SfgcnAgQP7ypBf+CAgAhQePlZ35QyDxAMp16y3Rn94UeU0pAjS09DQ4MQTZjigRYsW+TZWvbnU1dW5GTNm+DEADJgScj7MDLRds2ZN2jgSiHvGQBtCDtBqg42DrRPVdsBDfEI3ue0MLJORyhfKworYIAN5DKIgcyxqDbzlHtfp06f7iU+cOOH69u3r1q5d680AbGrv3r1jiQ3Fi5A8gA4pB5hHjx71EqfzshdmtdZSVlbmJPiOn0+ePOnu3r0b02vtv10Pa6DiwCZR+4m3L5THPwBLtaF5hYWF+Qjm2XizuttYzO4oOBpgcAAYpHDr1q3xorQsWbLEiUH33j7Uf+bMmV6yAeKRI0e8Vw95aJYWLWDkhg0b/P3o0aPdrFmzYts9aNCgtHVYYbEhk52HwzX0zcXW6WO+w+uuT4aIGietDWVbqQMz96y9tSGJtq2srHQPHz50u3btcvPnz/deX4sY83ixVuUBJgrMBkBlrx1SVy6YR8ccNWqUBxVFQzGmz9LPa+D7UPSAqwT5uZFgxoBCpNt5UVbs9V0o7GDHZMMQJmr8+PGuqqrK7dy50z148MCtWLHCt71+/bqXnGwFarp///4MZvPiLNCy20trr7baCgULgTpBppsdksVEJbW5uflDvN+PNvVtb9++bbHOgUWc1SoktbwYnXj79u1uwIABbty4cXF7JFx07Hnz5sULhSPRflp27NjhhgwZ4u8BKIJ5Gwcz85gGMAFzKf337t3z92Lv0syDhlU8ng0bGYOQ45JtOraVbQxoiyyo2Ta0njcU1Ic2AToGnI6q7pw5c9ylS5fidgBn2bJlrrGx0b8DsBxco0BV169f7+/RDgyyiwrFyyjbtm1zz58/9+NhbjUfgwcPzjBPoSgjJFgsyUwnsEN2DySkImSbZMJ6id++sAGsdRYat3HSQd8p5/V+6tSp7sCBAz70uXHjhq+hAikcOXJkhh3EWPgGST548KA7ffq0mzJlShyLWunhAomcMGFCxjylpaVp20ebXwglY9gJhzY5wriGKC/q9/IA9PX9+/d/1hiSOREyyhr08vbMSqd+BxCQtGwF3yBNVo0Z1IqKiljaIbEWwNB2lG2mSibPw77AbntDUUTIzOiOCdhF2aa2VJTHe3XlypW/S5gyGg3U9tgtXLbAl/OdNoxBqAP7Byk9c+ZM2liQIFVB7YPECQBUx4L3uC5fvtxLHYDCXLCFaIex1FzwghE96Hz4Pnv27FizbHbLMsfmCDg1yNqJii0rsIuyTa3oAZffQ+r42tra7UJ8sTio4F49lDu0gFuiQxnzbOm6bMWm+2wCW5Paly9f9lGExpsspaEcZyiVZ3OrvPPjzD3lRBtHjBjxZ3l9WerPqvJA8NnZs2fvIBv9MU7NBC5bnMrSwbGctVEhb2klPhRycTImtOHIlpgO5R1sKMdMYROmISKHTBz8Y878/HwHzKKzJWDYBkraI4NaJ4H3hdevXzcBULvFtMliC4oNs5STNji2poPjOxs52PntWBx/WruajWG2LXtsZUzIu2tuQ9cAVQdW'
    $bnSkip &= 'wCw6AvFOKYeOSBGgJiQE6DZ58uRveKLQNs2qr92C2gRCKA2WTQVDY1r7ZU0JCiQGdfjw4UipZT3ICx3s2fCJTRe30zMl2PV169b9cOvWLSR6H0l9A0D5TAkb/F7Y+q5evXrh0qVLS2BLVc2znQX9ltPC0JlSCEQ977GHfiod6lVDYc1vtcnsPNVGZstVMPPUbgLQwsJCbKNvVldX75NmP0p9jtATXRLm1LM4Suf/6TspEniX9evXr2syZKTMOdEn/xD4H53Qp86W7Gnnr833/85t1tv+6NGj+pqamh/Fdv5VXv1N6hMNmULn8qkI1J5SB0jtF/09UhDtqj7Xv0c6Il/zTup/pD6U+o9IMhv5D5JElt9woP5do99xiqLQKvmZ/zjSHm0v30a/4TRE963Z/hzhd3o0kkdg/v5v0y+gtkRAttt/m/4rwADASncLtob/NAAAAABJRU5ErkJggg=='
    Return Binary(_Base64Decode($bnSkip))
EndFunc   ;==>_bnSkip

Func _Background()
    Local $Background
    $Background &= 'R0lGODlhKAHGANUAAOjo6Lq6uuXl5erq6uzs7O/v76CgoHFxceLi4tXV1YWFheTk5Ofn5+bm5unp6ZiYmNzc3MzMzKmpqevr6+3t7fDw8O7u7rS0tKqqqnp6eqenp8TExNvb25CQkJKSkoKCgnZ2dnl5eZqamsLCwpubm7CwsIiIiLu7u2xsbIeHh3V1ddTU1MfHx9DQ0N7e3qampm9vb8bGxrGxsc7Ozr29vYuLi8vLy9bW1tjY2MDAwL+/v2tra39/f4GBgd3d3ePj4yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjQzN0E1NDczRkM0Q0UxMTE4RDVCQTVGNEU4Mzc4QjIwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjcyOEFCQjBCNERCNzExRTE4NEJDOEVGQTQ4RDRDQUREIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjcyOEFCQjBBNERCNzExRTE4NEJDOEVGQTQ4RDRDQUREIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQzN0E1NDczRkM0Q0UxMTE4RDVCQTVGNEU4Mzc4QjIwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzN0E1NDczRkM0Q0UxMTE4RDVCQTVGNEU4Mzc4QjIwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAAAAAAAsAAAAACgBxgAABv/AQmVYKRiPyKRyyWw6n9CodEqtWq/YrHb7pEwcDYplTCGYz+i0es1uu9/wuHxOr9vv+Lx+/x4ABBwEFGUTA4aHiImKi4yNjo+QkZKTlJWWl5iZmpuODgwCPhsTo34ApqeoqaqrrK2ur7CxsrO0tba3uLm6u66fECwyAw4ADA0Cx8jJysvMzc7P0NHS09TV1tfY2drb3M8LODEXBsPF'
    $Background &= 'Cz/n6Onq6+zt7u/w8fLz9PX29/j5+vv87xARJzA8INfAXL+DCBMqXMiwocOH/wJIGEis4MOLGDNq3MjxYsSJBA12HEmypMmTCz9SLIeypcuXMFGqDBmzps2bOPXNrCgyp8//n0Bt7mQZtKjRoxyHWkTKtKlTfkp7Pp1KtWq6qFazanWKdavXrz67gh1LtqXYsmjTajyrtq3bhGzfyp1rLy7du3jZ2c3LF+/evoDf/g1MGO3gwoi/Hk7M2OrixpC5RpC4cmnky1kfY978UzPnz0Ing+QJuvRRz6ZTm0StunVS0ZWlup4tEzZN2rhrU76du/dI1r6D7wMuvHhd26SNK2dIfLnzds2fS0cXfbr06tadY8+ufDv34t6/Bw8vvjf58rjPo5+tfn3r9u5Tw49fej79z/bvb86v/zL//pD9ByBjAg6IWIEGEoZggoAtyCBfDj7oF3JESagdhZZZ2B2Gsmk4/x6HHi4XYYhujUiiWiaeaBiIKn64W3ItmsdijLmlSKNiM97IXo46vsdjj/L9CGR9Qg6JX5FG7odkkv4tyWSATj5JYJRSHkhllQpeiWWDWm4JYZdeTvhihWFCOWaGZU55ZodpZrlmm2aORiachdlIZ0523nlTnnrWxGefMP0JqEuCDqqbnGgaelehipbEaKO/gQmpV49OulGllmaEaaYeScppVZt+2lCooqbkaamSvYkqiqeuihSprvYDa6zDtUprULPeik+uuh6naq+U2gosTrwOK0+xxsKDbLLuLMusXsI++5Kz0l4VbbWHxobtVNRu2y2231YbrrTjPlsus+cmm/+usesO2y6w7/Yar67z3lovrffGmq+r+67aL6r/lhqwqAN/WjCnB2easKULT9owpA83GrGiExta8aAXA5pxnxvr2fGdH9MZMpwjt1lymieXmXKYK3vZ8pYvYxlzlTNLWfOTNzOZc5I7G9nzkD8DGXSPQ+tY9I1H05h0jEu32LSKT58YNYlTh1i1h1drmLWFW0sYFQJghy322GSXbfbZaKet9tpst+3223DHLffcdNeNNgc2UEaMAAtAkMDfgAcu+OCEF2744YgnrvjijDfu+OOQRy755JQfPoMOJRjgQUEutDBCAKCHLvropJdu+umop6766qy37vrrsMcu++y0146L+gUakNBBCgvcsMEFLxgg/PDEF2/88cgnr/zyzDfv/PPQRy/99NRXb/31yovQgQkf8LACDQLVoMD45Jdv/vnop6/++uy37/778Mcv//z012///fiv30MGIIAQQg4a8MAHVHCAAhrwgAhMoAIXyMAGOvCBEIygBCdIwQpa8IIYzKAGGwiDHaDgABkIAgA7'
    Return Binary(_Base64Decode($Background))
EndFunc   ;==>_Background

Func _Artwork()
    Local $Artwork
    $Artwork &= 'R0lGODlhZABkAHcAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQICgAAACwAAAAAZABkAIcCAwM9LDNviHELISZHaHOWqbIWOEEGDRJvPkRdeYM6TlmGmaKnuMINJzELGR4uSU1GY1tcaGw9RkuLRksdJzAFBglsgIceIB+6vL8bHRyOoap3kH5MT1kjQEaesLpbbnlLRU0LDxkjLTRUYWVxUVp9ennNztCfU1sqOTwSLjkSISZPUVE7W1sxTllPbXh0gYZ4a24TGR1LOkJteXyMk5gcLjlidH2NmZ99io8aJCsGCAcGCQyeoqUHERYHHCMSFRumqq1gS1hJYlliQk0uKzIsQUeElqF6hIkGExultsCcQUMLHimtv8mXmpwVJzEHIymyw80kOT0LHCMLFBuAPUSSo60MFyCdrrlpYGdBXmlcY2o7TFRnaG0/MzwNKS6Hio5VaGwuJy0TJCsJCg2tsrWDkJVcdoE2SU4KDRNDVF0MJCtqfopmfYmMnqkzREwcHiJUWFw0UlxVcXwzOT1KZnEaNkEUKS4UMTaPXGcjMjaTe3lNTU5qdXu2x9FnVVV8jpkTKzOgS1NCW2QOMjorND2VprFLXGURExZfO0GnsrRziI6aqa9mgYxjeoVwTFGqu8VzhpIhPkl+YGoePkgSHCQ6VmEbNDza2t4iIyQ8PERuhJBGZXFaWl8WN0BccFhzfIKKm6Vtgo1bc34UMzsjJysrPEN6RUobOD5nYVoqRlF+kZscMTaUQkk/YGo2VWALERYkSVEOMDZFTVSfX2scOkNJYGZTa3UiPESClJ1FRkuGa2wRHikNKzN6jJWDhYonRVAtSlRUQkRNanUaLDRUTFQzTFRidoJEYm08WmTFxMiis70IBwtWcHY0NTyaq7UlQkxTbnkjNDtTZG5bbHVqfIWdpaxnb3R/foNuREuJl6NLY21yhI1uipR/UVxTXGJfSVIrQ0w7U1wvIyVAOz4jNkCZnqRSOT9TVFSprrR1ipQvMzVLVl0aHykrPkkcKi5WdIFTRUsdISN1fYpAVU10X2ZjZWm+wcQ4V1eUSlSHnKmdQ0tCO0SATlAzPENlXGeSlJkI/wDVXbiQoSCmgwUNFoxX8A2meKQSSkwYD9Obi/HeZLwQhtRBdQwveCQlAlNCTKQuvpmYARPBlhMRJhwYb+CFmi0HZqiXAYBPn2MqjPlJtCiAV0aJCj1wYMeBCk3RxABQYUe8Vzt2UHpVAU3Sr0N96ig6JuzXnxV+nutpdMdZn2imqJgyxUFdB6+moIk7RQpdu3aliDkgxlIpQIDUULIjhRKaqgemZN1RoapboGe9vk26djPRoTumDBgASIqUxKbpThEjZYkUxgPoxkU8itatO7xSjEpcWkpgwXp3/JC8Aw1Xn0LTYvZctHNSysX3onFMVwySYaaHDUht2p0UNT4Sw/+eQmlYDUCjLI3ipcaSJTVi1Jh28F2+XkoD7K7GWmFZUJ+hVcWcWmwpJVRoxU1hhRh0CaZGNN+VJpoDaqhByGlLVJiCGrsBYomHdVjCCyAjlqIGIE9U+B17UrxywABqIGGaY2gwlVdfiKlhh3yUMKXcV8615VRkfUkR14nDDHOiGNtJAeMAUQCSAi/sidjhLZaEeIolG6rhxonssaeGmKZt94pfMTz2yis1SqHebu/xwppfdCEFgA5ePRZkUi7q1VdcYiS5Cnx2bJdhA2KUUsN6JI4CJiC3oOeeeogVc2KFpcH3nWlqNNgYJcW9MoYDtzzTTjRRiEimaam5VZkKB+z/+dMYh4yxlyx7ZKLXD5S4Y0g0agwDoRoijHBLNN4ME44a0ohYxDC3gFFLGh6O8gk1NgCyxRbReAEIORUWc6EY+B0QISCsxZXDGcWA40Y7pdSxng+s+uUaXWlVtudlWlxTjy9oYHBOE3uogw4Q6lxCgxh8NCFFP0eY8AkKvohAwy4YHAEIH9FsY0gUuCBmCTpR4LBONTyQIUYa1Wwjhg3rUCKFCi3G10CO'
    $Artwork &= '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'
    $Artwork &= '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'
    $Artwork &= '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'
    $Artwork &= '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'
    $Artwork &= 'Kgjri3ORC/b44gGT0OU3uQmdu9xViEJg5w9/eJon6ZCFnTxDDBeZ42amsAQ13IESnGriVWIwpumc6AC0jKIltLGN9lSPnf4T1qqcAU//1SVVyGTVMmGEi3SswRiicEHFdhJEB5CrIIeLyrNcyVA+hiY8HtzBKw7gU9FU0AdqAIcotgGKd9WlevAUViUPKDphmRGfhXoVM//Qi1CYQQ5y+GcL4vCMCB4Aa2fizO84pThvdmo6ovHpFEKwFSmoARC2CMUf2mBGpYhuWAUwJDIN2aJ8VmEBrmKmz5DFBmj4EBiLpYXrLuKt/zkeAnFnzem2djAFrcSRYSHgLMN+ogCvYAhWLtJAFfBJWNO+CFYL8Bl2cLElXPBTqxUDxjOgA4iBfpOINJWKDpgYlatEpaevqMBl3RrIOs5vE7YQhUSq1T27wYopoNAAaxeQmu4ZK7aqgEQvIGEMaIbDEikAxzDEQAmxhgZ+ZpUKZM8a3Ki84mMHQIJMKvCsoaohGsJoqSgaEQqJ/CEd++zea1NjLAFLDFmh0EQ/RWGLYxwDGOCoQx0sMVBSgvODWJFjeylLpqlQsIISEgp+1UABYcihpSlm0GGfBBGJMDgUjaDxtbQKDWHYomIRPkYknkGLOkRHCmYKD2RN+WHvwP+3M1GUQn2bHFdeUEIQ79gqTgpjBlHIwQxbboQZEnAtHEPDFnTQBo8VBMrDMJYWax6FJaIhmoISZEzbQvJmlEwu+VWQSsmtoxiiseUqHwMZZVZSYYRxaDpsIsKHCUcxFtsCYOwkDsioRCoicYsD3eIZcSgFeH535DpPRcmeOoBg4lpfNeRXrj0QxFZxbJicuGInyKA1rV3hCkinAhzgeMYzUuFrVrag15EAB0+AUQlkqKCgkHVvqKUy6hCdxwHPUpgUFCbXA9QAGs2xcsWQEQdX6CSJwEhFbXsNDkyvuQ6RGMUofnyMB9OhGMV4hhR0G0c5O5szdy7REHfggGlLwQf/cVWDGHpwgDQY+od0WBKPs3CYSkB6sbZNNy1SQItRpOAWljgG0D4Qh1TEQQXgZFy+9S1q0HgnjueRkBcGMFAAiEFBDe82HQ7NX0U/nNaNfvS4f/1j5iJ7whKMH0F8e/Jnp/ysxZXvTktRa2QsSRiJ3WrVE1uxTYRDEN/eiU6KcYtRiEEKW4h0MeAYlQ4jPaehNiUa3FCMOLAg6jfZdtXlkNgHbqLW4u5J2KsSrq+P0lvwo7Pagav0Dx+ZEm8vhtazYPO7Vx3RSsqCToQdZC8ggdk7yAElLLtew6Pc5AXBWBPH4I55FyMNlYgwHRju+ocfRkEBBcRPDhDnZZvS9KF/QjYn9vB74J9jBcAnPvGFH/wVWIMaEaNGKLahCOhPbBsWoH4jlm8DaXgDDuf4Pfe7v4dzeB/8wS9++c1f/OEX3xcBAQA7'
    Return Binary(_Base64Decode($Artwork))
EndFunc   ;==>_Artwork

Func _Base64Decode($input_string)
    Local $struct = DllStructCreate("int")
    Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
    Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
    $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($a, 1)
EndFunc   ;==>_Base64Decode

Func _CleanupAndExit()
    _WinAPI_DeleteObject($Bmp_Rating)
    _WinAPI_DeleteObject($Bmp_RatingStar)
    _WinAPI_DeleteObject($Bmp_RatingStarOff)
    _WinAPI_DeleteObject($Bmp_Button_Rate)
    _WinAPI_DeleteObject($Bmp_Button_RatePlus)
    _WinAPI_DeleteObject($Bmp_Button_Skip)
    _GDIPlus_Shutdown()
    Exit
EndFunc   ;==>_CleanupAndExit
Edited by big_daddy
Link to comment
Share on other sites

  • Moderators

big_daddy,

To drag your PopUp , I suggest one of the methods in the Moving and Resizing PopUp GUIs tutorial in the Wiki. :)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

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
 Share

×
×
  • Create New...