UDF > WinAPIEx > System > Windows >


_WinAPI_UpdateLayeredWindowEx

Met à jour la transparence d'un bitmap d'une fenêtre de type Layered

#include <WinAPISysWin.au3>
_WinAPI_UpdateLayeredWindowEx ( $hWnd, $iX, $iY, $hBitmap [, $iOpacity = 255 [, $bDelete = False]] )

Paramètres

$hWnd Handle d'une fenêtre Layered. Une fenêtre Layered est créée en spécifiant $WS_EX_LAYERED lors de sa création.
$iX La nouvelle position de la partie gauche de la fenêtre.
$iY La nouvelle position de la partie supérieure de la fenêtre.
$hBitmap Handle du bitmap qui sera défini dans la fenêtre Layered.
$iOpacity [optionnel] La valeur alpha de la transparence à utiliser sur l'ensemble du bitmap source. Par défaut, 255.
$bDelete [optionnel] Spécifie s'il faut supprimer le bitmap après mise à jour de la fenêtre, les valeurs valides sont:
    True - Le bitmap sera supprimé si la fonction réussit.
    False - Le bitmap ne sera pas supprimé, il faudra le libérer lorsque vous aurez terminé de l'utiliser (par défaut).

Valeur de retour

Succès: Retourne True
Échec: Retourne False

Remarques

Pour de meilleures performances de dessin par la fenêtre Layered et toutes les fenêtres au dessous, la fenêtre Layered devrait être aussi petite que possible.

Si $iX et $iY sont tout deux égaux à (-1), la position de la fenêtre actuelle ne changera pas.

Exemple

#include <GDIPlus.au3>
#include <Misc.au3>
#include <WinAPIHObj.au3>
#include <WinAPISysWin.au3>
#include <WindowsConstants.au3>

_GDIPlus_Startup()
Local $hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & '\Extras\Exclamation.png')
Local $hForm = GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()'), _GDIPlus_ImageGetWidth($hImage), _GDIPlus_ImageGetHeight($hImage), -1, -1, $WS_POPUPWINDOW, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))
Local $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
GUISetState(@SW_SHOW)

Local $iOpacity = 0, $iStep = 3
Do
    _WinAPI_UpdateLayeredWindowEx($hForm, -1, -1, $hBitmap, $iOpacity)
    $iOpacity += $iStep
    If ($iOpacity = 0) Or ($iOpacity = 255) Then
        $iStep = -$iStep
        Sleep(500)
    EndIf
    Sleep(10)
Until _IsPressed('1B')

_WinAPI_DeleteObject($hBitmap)