UDF > WinAPIEx > Menus & Resources > Icons >


_WinAPI_CreateIconIndirect

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]]] )

Paramètres

$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.

Valeur de retour

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.

Remarque

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.

En relation

_WinAPI_DeleteObject

Voir aussi

Consultez CreateIconIndirect dans la librairie MSDN.

Exemple

#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