UDF > WinAPIEx > GDI > Regions >


_WinAPI_RedrawWindow

Repeint le rectangle ou la région spécifié dans la zone client d'une fenêtre

#include <WinAPIGdi.au3>
_WinAPI_RedrawWindow ( $hWnd [, $tRECT = 0 [, $hRegion = 0 [, $iFlags = 5]]] )

Paramètres

$hWnd Handle de la fenêtre
$tRect [optionnel] Structure $tagRECT contenant les coordonnées du rectangle à repeindre. Ce paramètre est ignoré si le paramètre $hRegion identifie une région.
$hRegion [optionnel] Identifie la région à repeindre. Si les paramètres $hRegion et $tRECT sont 0, la zone cliente entière est ajoutée à la région à repeindre.
$iFlags [optionnel] Spécifie les flags de peinture. Ce paramètre peut être une combinaison des flags qui invalident ou valident une fenêtre, qui contrôlent la peinture, et qui contrôlent les fenêtres qui sont affectés:
    $RDW_ERASE - La fenêtre recoit un message WM_ERASEBKGND lorsque la fenêtre est repeinte
    $RDW_FRAME - Une partie de la zone non cliente de la fenêtre qui a une intersection avec la région repeinte recoit un message WM_NCPAINT.
    $RDW_INTERNALPAINT - Un message WM_PAINT est posté dans la fenêtre indépendamment du fait qu'une portion quelconque de la fenêtre n'est pas valide.
    $RDW_INVALIDATE - Invalide $tRECT ou $hRegion. Si les deux sont 0, la fenêtre entière est invalidée.
    $RDW_NOERASE - Supprime les messages $WM_ERASEBKGND en attente
    $RDW_NOFRAME - Supprime les messages $WM_NCPAINT en attente
    $RDW_NOINTERNALPAINT - Supprime les messages internes WM_PAINT en attente
    $RDW_VALIDATE - Valide $tRECT ou $hRegion
    $RDW_ERASENOW - Les fenêtres affectées recoivent las messages $WM_NCPAINT et $WM_ERASEBKGND, si nécessaire, avant le retour de la fonction
    $RDW_UPDATENOW - Les fenêtres affectées recoivent les messages $WM_NCPAINT, $WM_ERASEBKGND, et $WM_PAINT, si nécessaire, avant le retour de la fonction.
    $RDW_ALLCHILDREN - Inclut les fenêtres enfants dans l'opération de peinture
    $RDW_NOCHILDREN - Exclut les fenêtres enfants de l'opération de peinture

Valeur de retour

Succès: Retourne True
Échec: Retourne False

Remarques

Lorsque RedrawWindow est utilisé pour invalider une partie de la fenêtre du bureau, la fenêtre du bureau ne reçoit pas de message $WM_PAINT.
Pour repeindre le bureau une application utilise le flag $RDW_ERASE pour générer un message $WM_ERASEBKGND.

Les constantes ci-dessus nécessitent WindowsConstants.au3

En relation

$tagRECT

Voir aussi

Consultez RedrawWindow dans la librairie MSDN.

Exemple

#include <WinAPIGdi.au3>
#include <WinAPIGdiDC.au3>
#include <WinAPIHObj.au3>
#include <WinAPISysWin.au3>
#include <WindowsConstants.au3>

ShowCross(@DesktopWidth / 2, @DesktopHeight / 2, 20, 2, 0xFF, 3000)

Func ShowCross($iStart_x, $iStart_y, $iLength, $iWidth, $iColor, $iTime)
    Local $hDC, $hPen, $o_Orig

    $hDC = _WinAPI_GetWindowDC(0) ; DC de tout l'écran (bureau)
    $hPen = _WinAPI_CreatePen($PS_SOLID, $iWidth, $iColor)
    $o_Orig = _WinAPI_SelectObject($hDC, $hPen)

    _WinAPI_DrawLine($hDC, $iStart_x - $iLength, $iStart_y, $iStart_x - 5, $iStart_y) ; gauche horizontal
    _WinAPI_DrawLine($hDC, $iStart_x + $iLength, $iStart_y, $iStart_x + 5, $iStart_y) ; droite horizontal
    _WinAPI_DrawLine($hDC, $iStart_x, $iStart_y - $iLength, $iStart_x, $iStart_y - 5) ; Haut vertical
    ; _WinAPI_DrawLine ($HDC, $iStart_x, $iStart_y + $iLength, $iStart_x, $iStart_y + 5); Bas vertical
    _WinAPI_MoveTo($hDC, $iStart_x, $iStart_y + $iLength)
    _WinAPI_LineTo($hDC, $iStart_x, $iStart_y + 5)

    Sleep($iTime) ; Affiche la croix sur l'écran pendant quelques secondes

    ; Rafraîchit le bureau (efface la croix)
    _WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN)

    ; Nettoie les ressources
    _WinAPI_SelectObject($hDC, $o_Orig)
    _WinAPI_DeleteObject($hPen)
    _WinAPI_ReleaseDC(0, $hDC)
EndFunc   ;==>ShowCross