UDF > WinAPIEx > Menus & Resources > Icons >


_WinAPI_CreateIconFromResourceEx

Crée une icône ou un curseur à partir des bits d'une ressources décrivant l'icône

#include <WinAPIIcons.au3>
_WinAPI_CreateIconFromResourceEx ( $pData, $iSize [, $bIcon = True [, $iXDesiredPixels = 0 [, $iYDesiredPixels = 0 [, $iFlags = 0]]]] )

Paramètres

$pData Les bits de la ressource icône ou curseur. Ces bits sont généralement chargés par des appels aux fonctions _WinAPI_LookupIconIdFromDirectoryEx() et _WinAPI_LoadResource().
$iSize La taille, en octets, de l'ensemble des bits pointés par le paramètre $pData.
$bIcon [optionnel] Indique si une icône ou un curseur doit être créé, les valeurs valides sont:
    True - Une icône doit être créé (par défaut).
    False - Un curseur doit être créé.
$iXDesiredPixels [optionnel] La largeur désirée, en pixels, de l'icône ou du curseur. Si ce paramètre est zéro (par défaut), la fonction utilise la valeur métrique du système pour définir la largeur.
$iYDesiredPixels [optionnel] La hauteur désirée, en pixels, de l'icône ou du curseur. Si ce paramètre est zéro ( par défaut ), la fonction utilise la valeur métrique du système pour définir la hauteur.
$iFlags [optionnel] Ce paramètre peut prendre une ou plusieurs des valeurs suivantes:
    $LR_DEFAULTCOLOR (par défaut)
    $LR_DEFAULTSIZE
    $LR_MONOCHROME
    $LR_SHARED

Valeur de retour

Succès: Retourne le handle de l'icône ou du curseur.
Échec: Retourne 0, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur.

Remarque

Vous devez appeler _WinAPI_DestroyIcon() pour les icônes créées avec la fonction _WinAPI_CreateIconFromResourceEx().

En relation

_WinAPI_DestroyIcon

Voir aussi

Consultez CreateIconFromResourceEx dans la librairie MSDN.

Exemple

#include <APIResConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <StaticConstants.au3>
#include <WinAPIIcons.au3>
#include <WinAPIRes.au3>

; Charge resources.dll en mémoire
Local $hInstance = _WinAPI_LoadLibraryEx(@ScriptDir & '\Extras\Resources.dll', $LOAD_LIBRARY_AS_DATAFILE)
If Not $hInstance Then
    MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', @ScriptDir & '\Extras\Resources.dll n''existe pas.')
    Exit
EndIf

; Charge la ressource RT_GROUP_ICON à partir de la bibliothèque Resources.dll
Local $hResource = _WinAPI_FindResource($hInstance, $RT_GROUP_ICON, 1)
Local $hData = _WinAPI_LoadResource($hInstance, $hResource)
Local $pData = _WinAPI_LockResource($hData)

; Recherche un nom de ressource entier pour l'icône qui correspond le mieux à la taille spécifiée (48x48)
Local $iIcon = _WinAPI_LookupIconIdFromDirectoryEx($pData, 1, 48, 48)

; Charge la ressource RT_ICON à partir de la bibliothèque Resources.dll
$hResource = _WinAPI_FindResource($hInstance, $RT_ICON, $iIcon)
Local $iSize = _WinAPI_SizeOfResource($hInstance, $hResource)
$hData = _WinAPI_LoadResource($hInstance, $hResource)
$pData = _WinAPI_LockResource($hData)

; Crée une icône à partir de la ressource
Local $hIcon = _WinAPI_CreateIconFromResourceEx($pData, $iSize)

; Décharge Resources.dll de la mémoire
_WinAPI_FreeLibrary($hInstance)

; Crée une GUI
GUICreate('Test ' & StringReplace(@ScriptName, '.au3', '()'), 128, 128)
GUICtrlCreateIcon('', 0, 40, 40, 48, 48)
GUICtrlSendMsg(-1, $STM_SETIMAGE, 1, $hIcon)
GUISetState(@SW_SHOW)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE