UDF > WinAPIEx > System > Windows >


_WinAPI_GetWindowDC

Obtient le contexte de périphérique (DC) d'une fenêtre entière

#include <WinAPIGdiDC.au3>
_WinAPI_GetWindowDC ( $hWnd )

Paramètre

$hWnd Handle de la fenêtre

Valeur de retour

Succès: Retourne le handle du contexte de périphérique de la fenêtre spécifiée
Échec: Retourne 0

Remarque

GetWindowDC est destinée pour des effets spéciaux de peinture dans la zone non cliente d'une fenêtre.
La peinture dans les zones non clientes d'une fenêtre n'est normalement pas recommandée. La fonction GetSystemMetrics peut être utilisée pour obtenir les dimensions des différentes parties de la zone non cliente, telle que la barre de titre, le menu et les barres de défilement.

Après que la peinture soit terminée, la fonction _WinAPI_ReleaseDC() doit être appelée pour libérer le contexte de périphérique.
Ne pas libérer le contexte de périphérique de la fenêtre a des effets graves sur la peinture demandée par les applications.

En relation

_WinAPI_ReleaseDC

Voir aussi

Consultez GetWindowDC 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