Crée une icône à partir d'une image et d'un masque d'une liste d'images
#include <GuiImageList.au3>
_GUIImageList_GetIcon ( $hWnd, $iIndex [, $iStyle = 0] )
$hWnd | Handle de la liste d'images |
$iIndex | Index, de base 0, de l'image |
$iStyle | [optionnel] Style de dessin et superposition d'images: 1 - Dessine l'image transparente en utilisant le masque, indépendamment de la couleur de fond 2 - Dessine l'image en mélangeant 25 pour cent de la couleur de surlignage du système 4 - Dessine l'image en mélangeant 50 pour cent de la couleur de surlignage du système 8 - Dessine le masque |
Succès: | Retourne le handle de l'icône. |
Échec: | Retourne 0. |
Il est de la responsabilité de l'application qui a appelé la fonction de détruire l'icône retournée par cette fonction en utilisant _GUIImageList_DestroyIcon().
#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 Get 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") ; Définit des parties _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 ; Libère les icônes 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