Crée une icône ou un curseur qui a la taille, les couleurs, et les motifs de bits spécifiés
#include <WinAPIIcons.au3>
_WinAPI_CreateIconIndirect ( $hBitmap, $hMask [, $iXHotspot = 0 [, $iYHotspot = 0 [, $bIcon = True]]] )
| $hBitmap | Handle du bitmap icône en couleur. |
| $hMask | Handle du bitmap icône masque de bits. |
| $iXHotspot | [optionnel] Indique la coordonnée x du point réactif du curseur. Si la création concerne une icône, le point réactif est toujours au centre de l'icône, et ce paramètre est ignoré. La valeur par défaut est 0. |
| $iYHotspot | [optionnel] Indique la coordonnée y de point réactif du curseur. Si la création concerne une icône, le point réactif est toujours au centre de l'icône, et ce paramètre est ignoré. La valeur par défaut est 0. |
| $bIcon | [optionnel] Spécifie s'il faut créer une icône ou un curseur, les valeurs valides sont: True - Crée une icône (par défaut). False - Crée un curseur. |
| Succès: | Retourne le handle de l'icône ou du curseur qui est créé. |
| Échec: | Retourne 0, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur. |
Le système copie les bitmaps avant de créer l'icône ou le curseur.
Parce que le système peut sélectionner temporairement ces bitmaps dans un contexte de périphérique, $hBitmap et $hMask ne doivent pas déjà être sélectionnés dans un contexte de périphérique.
L'application doit continuer à gérer les bitmaps d'origine et les supprimer en utilisant _WinAPI_DeleteObject() quand ils ne sont plus nécessaires.
Consultez CreateIconIndirect dans la librairie MSDN.
#include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WinAPIGdi.au3> #include <WinAPIGdiDC.au3> #include <WinAPIHObj.au3> #include <WinAPIIcons.au3> #include <WinAPIMisc.au3> ; Crée XOR bitmap Local $hDC = _WinAPI_GetDC(0) Local $hMemDC = _WinAPI_CreateCompatibleDC($hDC) Local $hXOR = _WinAPI_CreateCompatibleBitmapEx($hDC, 32, 32, 0) Local $hSv = _WinAPI_SelectObject($hMemDC, $hXOR) _WinAPI_SelectObject($hMemDC, _WinAPI_GetStockObject($DC_BRUSH)) _WinAPI_SelectObject($hMemDC, _WinAPI_GetStockObject($NULL_PEN)) Local $tRECT = _WinAPI_CreateRectEx(0, 1, 22, 22) _WinAPI_SetDCBrushColor($hMemDC, 0x0000FF) _WinAPI_Ellipse($hMemDC, $tRECT) _WinAPI_OffsetRect($tRECT, 11, 0) _WinAPI_SetDCBrushColor($hMemDC, 0x00FF00) _WinAPI_Ellipse($hMemDC, $tRECT) _WinAPI_OffsetRect($tRECT, -6, 9) _WinAPI_SetDCBrushColor($hMemDC, 0xFF0000) _WinAPI_Ellipse($hMemDC, $tRECT) _WinAPI_ReleaseDC(0, $hDC) _WinAPI_SelectObject($hMemDC, $hSv) _WinAPI_DeleteDC($hMemDC) ; Crée un bitmap AND $hDC = _WinAPI_GetDC(0) $hMemDC = _WinAPI_CreateCompatibleDC($hDC) Local $hAND = _WinAPI_CreateBitmap(32, 32, 1, 1) $hSv = _WinAPI_SelectObject($hMemDC, $hAND) _WinAPI_SelectObject($hMemDC, _WinAPI_GetStockObject($DC_BRUSH)) _WinAPI_SelectObject($hMemDC, _WinAPI_GetStockObject($NULL_PEN)) _WinAPI_SetDCBrushColor($hMemDC, 0xFFFFFF) $tRECT = _WinAPI_CreateRectEx(0, 0, 33, 33) _WinAPI_Rectangle($hMemDC, $tRECT) _WinAPI_SetDCBrushColor($hMemDC, 0) $tRECT = _WinAPI_CreateRectEx(0, 1, 22, 22) _WinAPI_Ellipse($hMemDC, $tRECT) _WinAPI_OffsetRect($tRECT, 11, 0) _WinAPI_Ellipse($hMemDC, $tRECT) _WinAPI_OffsetRect($tRECT, -6, 9) _WinAPI_Ellipse($hMemDC, $tRECT) _WinAPI_ReleaseDC(0, $hDC) _WinAPI_SelectObject($hMemDC, $hSv) _WinAPI_DeleteDC($hMemDC) ; Crée une icône Local $hIcon = _WinAPI_CreateIconIndirect($hXOR, $hAND) ; Libère les bitmaps _WinAPI_DeleteObject($hXOR) _WinAPI_DeleteObject($hAND) ; Crée une GUI GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()'), 128, 128) GUICtrlCreateIcon('', 0, 48, 48, 32, 32) GUICtrlSendMsg(-1, $STM_SETIMAGE, 1, $hIcon) GUISetState(@SW_SHOW) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE