UDF > GUI > GuiImageList >


_GUIImageList_DestroyIcon

Détruit une icône et libère la mémoire occupée par l'icône

#include <GuiImageList.au3>
_GUIImageList_DestroyIcon ( $hIcon )

Paramètre

$hIcon Handle de l'icône

Valeur de retour

Succès: Retourne True.
Échec: Retourne False.

Exemple

#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiStatusBar.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIGdi.au3>
#include <WindowsConstants.au3>

Global $g_hStatus, $g_idMemo

Example()

Func Example()
    Local $hGUI, $ahIcons[2], $hImage
    Local $aParts[4] = [75, 150, 300, 400]

    ; Crée une GUI
    $hGUI = GUICreate("ImageList Destroy Icon", 400, 300)
    $g_hStatus = _GUICtrlStatusBar_Create($hGUI)

    ; Crée un contrôle mémo
    $g_idMemo = GUICtrlCreateEdit("", 2, 2, 396, 274, $WS_VSCROLL)
    GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")
    GUISetState(@SW_SHOW)

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    ; Partitionne la barre d'état
    _GUICtrlStatusBar_SetParts($g_hStatus, $aParts)
    _GUICtrlStatusBar_SetText($g_hStatus, "Part 1")
    _GUICtrlStatusBar_SetText($g_hStatus, "Part 2", 1)

    ; Charge des images
    $hImage = _GUIImageList_Create(11, 11)
    _GUIImageList_Add($hImage, _WinAPI_CreateSolidBitmap($g_hStatus, 0xFF0000, 11, 11))
    _GUIImageList_Add($hImage, _WinAPI_CreateSolidBitmap($g_hStatus, 0x00FF00, 11, 11))
    _GUIImageList_Add($hImage, _WinAPI_CreateSolidBitmap($g_hStatus, 0x0000FF, 11, 11))

    ; Définit des icônes
    $ahIcons[0] = _GUIImageList_GetIcon($hImage, 1)
    $ahIcons[1] = _GUIImageList_GetIcon($hImage, 2)
    _GUICtrlStatusBar_SetIcon($g_hStatus, 0, $ahIcons[0])
    _GUICtrlStatusBar_SetIcon($g_hStatus, 1, $ahIcons[1])

    ; Affiche les handles des icônes
    MemoWrite("Part 1 icon handle .: 0x" & Hex($ahIcons[0]))
    MemoWrite("Part 2 icon handle .: 0x" & Hex($ahIcons[1]))

    ; Boucle jusqu'à ce que l'utilisateur quitte.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    ; icônes gratuites
    MsgBox($MB_SYSTEMMODAL, "Information", "Icon 1 Destroyed? " & _GUIImageList_DestroyIcon($ahIcons[0]))
    MsgBox($MB_SYSTEMMODAL, "Information", "Icon 2 Destroyed? " & _GUIImageList_DestroyIcon($ahIcons[1]))
    GUIDelete()
EndFunc   ;==>Example

; Ecrit un message dans le contrôle memo
Func MemoWrite($sMessage = "")
    GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR

    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Local $tInfo
    Switch $hWndFrom
        Case $g_hStatus
            Switch $iCode
                Case $NM_CLICK 
                    ; L'utilisateur a cliqué sur le bouton gauche de la souris dans le contrôle
                    $tInfo = DllStructCreate($tagNMMOUSE, $lParam)
                    $hWndFrom = HWnd(DllStructGetData($tInfo, "hWndFrom"))
                    $iIDFrom = DllStructGetData($tInfo, "IDFrom")
                    $iCode = DllStructGetData($tInfo, "Code")
                    _DebugPrint("$NM_CLICK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
                            "-->Code:" & @TAB & $iCode & @CRLF & _
                            "-->ItemSpec:" & @TAB & DllStructGetData($tInfo, "ItemSpec") & @CRLF & _
                            "-->ItemData:" & @TAB & DllStructGetData($tInfo, "ItemData") & @CRLF & _
                            "-->X:" & @TAB & DllStructGetData($tInfo, "X") & @CRLF & _
                            "-->Y:" & @TAB & DllStructGetData($tInfo, "Y") & @CRLF & _
                            "-->HitInfo:" & @TAB & DllStructGetData($tInfo, "HitInfo"))
                    Return True ; indique que la souris a été manipulé et supprime le traitement par défaut par le système
                    ; Return false; pour permettre le traitement par défaut du clic.

                Case $NM_DBLCLK 
                    ; L'utilisateur a double-cliqué sur le bouton gauche de la souris dans le contrôle
                    $tInfo = DllStructCreate($tagNMMOUSE, $lParam)
                    $hWndFrom = HWnd(DllStructGetData($tInfo, "hWndFrom"))
                    $iIDFrom = DllStructGetData($tInfo, "IDFrom")
                    $iCode = DllStructGetData($tInfo, "Code")
                    _DebugPrint("$NM_DBLCLK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
                            "-->Code:" & @TAB & $iCode & @CRLF & _
                            "-->ItemSpec:" & @TAB & DllStructGetData($tInfo, "ItemSpec") & @CRLF & _
                            "-->ItemData:" & @TAB & DllStructGetData($tInfo, "ItemData") & @CRLF & _
                            "-->X:" & @TAB & DllStructGetData($tInfo, "X") & @CRLF & _
                            "-->Y:" & @TAB & DllStructGetData($tInfo, "Y") & @CRLF & _
                            "-->HitInfo:" & @TAB & DllStructGetData($tInfo, "HitInfo"))
                    Return True ; indique que la souris a été manipulé et supprime le traitement par défaut par le système
                    ; Return false; pour permettre le traitement par défaut du clic.

                Case $NM_RCLICK 
                    ; L'utilisateur a cliqué sur le bouton droit de la souris dans le contrôle
                    $tInfo = DllStructCreate($tagNMMOUSE, $lParam)
                    $hWndFrom = HWnd(DllStructGetData($tInfo, "hWndFrom"))
                    $iIDFrom = DllStructGetData($tInfo, "IDFrom")
                    $iCode = DllStructGetData($tInfo, "Code")
                    _DebugPrint("$NM_RCLICK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
                            "-->Code:" & @TAB & $iCode & @CRLF & _
                            "-->ItemSpec:" & @TAB & DllStructGetData($tInfo, "ItemSpec") & @CRLF & _
                            "-->ItemData:" & @TAB & DllStructGetData($tInfo, "ItemData") & @CRLF & _
                            "-->X:" & @TAB & DllStructGetData($tInfo, "X") & @CRLF & _
                            "-->Y:" & @TAB & DllStructGetData($tInfo, "Y") & @CRLF & _
                            "-->HitInfo:" & @TAB & DllStructGetData($tInfo, "HitInfo"))
                    Return True ; indique que la souris a été manipulé et supprime le traitement par défaut par le système
                    ; Return false; pour permettre le traitement par défaut du clic.

                Case $NM_RDBLCLK 
                    ; L'utilisateur a double- cliqué sur le bouton droit de la souris dans le contrôle
                    $tInfo = DllStructCreate($tagNMMOUSE, $lParam)
                    $hWndFrom = HWnd(DllStructGetData($tInfo, "hWndFrom"))
                    $iIDFrom = DllStructGetData($tInfo, "IDFrom")
                    $iCode = DllStructGetData($tInfo, "Code")
                    _DebugPrint("$NM_RDBLCLK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
                            "-->Code:" & @TAB & $iCode & @CRLF & _
                            "-->ItemSpec:" & @TAB & DllStructGetData($tInfo, "ItemSpec") & @CRLF & _
                            "-->ItemData:" & @TAB & DllStructGetData($tInfo, "ItemData") & @CRLF & _
                            "-->X:" & @TAB & DllStructGetData($tInfo, "X") & @CRLF & _
                            "-->Y:" & @TAB & DllStructGetData($tInfo, "Y") & @CRLF & _
                            "-->HitInfo:" & @TAB & DllStructGetData($tInfo, "HitInfo"))
                    Return True ; indique que la souris a été manipulé et supprime le traitement par défaut par le système
                    ; Return false; pour permettre le traitement par défaut du clic.

                Case $SBN_SIMPLEMODECHANGE 
                     ; Changements de mode simples
                    _DebugPrint("$SBN_SIMPLEMODECHANGE" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Aucune valeur de retour
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Func _DebugPrint($s_Text , $sLine = @ScriptLineNumber)
    ConsoleWrite( _
            "!===========================================================" & @CRLF & _
            "+======================================================" & @CRLF & _
            "-->Line(" & StringFormat("%04d", $sLine) & "):" & @TAB & $s_Text  & @CRLF & _
            "+======================================================" & @CRLF)
EndFunc   ;==>_DebugPrint