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