Funktionreferenz


_WinAPI_InvalidateRect

Beschreibung anzeigen in

Fügt ein Rechteck der zu aktualisierenden Region eines Fensters hinzu

#include <WinAPISysWin.au3>
_WinAPI_InvalidateRect ( $hWnd [, $tRECT = 0 [, $bErase = True]] )

Parameter

$hWnd Handle zu dem Fenster oder einer GUI-Control-ID
$tRECT [optional] $tagRECT Struktur welche die Koordinaten des Anwendungsbereichs des Rechtecks enthält das der zu aktualisierenden
Region des Fensters hinzugefügt werden soll. Ist dieser Parameter 0, wird der gesamte Anwendungsbereich der zu
aktualisierenden Region hinzugefügt.
$bErase [optional] Legt fest, ob der Hintergrund der zu aktualisierenden Region gelöscht wird, wenn die zu aktualisierenden Region
bearbeitet wird. Ist dieser Parameter TRUE wird der Hintergrund gelöscht sobald die BeginPaint Funktion
aufgerufen wird. Ist dieser Parameter FALSE, bleibt der Hintergrund unverändert.

Rückgabewert

Erfolg: True
Fehler: False. Es ist _WinAPI_GetLastError() aufzurufen um erweiterte Fehlerinformationen zu erhalten.

Verwandte Funktionen

$tagRECT

Siehe auch

Suche nach InvalidateRect in der MSDN Bibliothek.

Beispiel

;==============================================================================
; _WinAPI_InvalidateRect.au3
;==============================================================================

#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <ButtonConstants.au3>
#include <Constants.au3>
#include <WinAPI.au3>

Opt("MustDeclareVars", 1)

Global Enum $IDC_RED = 100, $IDC_GREEN, $IDC_BLUE

Global $aButton[3][2] = [["Rot", $IDC_RED], ["Grün", $IDC_GREEN], ["Blau", $IDC_BLUE]]

Global $hInstance

Global $nColor = 0x0000FFFF ; Gelb (BGR)

;==============================================================================
Exit (Example())
;==============================================================================

Func Example()
    Local $hwndMain, $hwndButton, $nWidth, $x

    $hInstance = _WinAPI_GetModuleHandle(0)

    ; Das Hauptfenster erzeugen
    $hwndMain = GUICreate( _
            "_WinAPI_FillRect - Demo", _                        ; Titel des Fensters
            400, 300, -1, -1, _                                 ; Größe und Position des Fensters
            BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPCHILDREN), _    ; Fensterstile
            $WS_EX_WINDOWEDGE, _                                ; Erweiterte Fensterstile
            0)                                                  ; Handle des Parent-Fensters

    $nWidth = _WinAPI_GetWindowWidth($hwndMain)
    $x = ($nWidth / 7)

    For $i = 0 To 2

        ; Drei einfache Schaltflächen erzeugen
        $hwndButton = _WinAPI_CreateWindowEx( _
                0, _                                            ; Erweiterte Fensterstile
                "BUTTON", _                                     ; Name der Fensterklasse
                $aButton[$i][0], _                              ; Text/Titel des Fensters
                BitOR($WS_TABSTOP, $WS_CHILD, $WS_VISIBLE, _    ; Fensterstile
                    $BS_CENTER), _
                $x, 220, ($nWidth / 7), 25, _                   ; Position und Größe des Fensters
                $hwndMain, _                                    ; Handle des Parent-Fensters
                $aButton[$i][1], _                              ; Identifizierer des (Kind-)Fensters
                $hInstance, _                                   ; Instanzhandle des Moduls
                0)                                              ; Anwendungsdefinierter Wert

        $x += 2 * ($nWidth / 7)
    Next

    ; Fensternachrichten registrieren
    GUIRegisterMsg($WM_COMMAND, "MyWM_COMMAND")
    GUIRegisterMsg($WM_ERASEBKGND, "MyWM_ERASEBKGND")

    ; Das Hauptfenster anzeigen
    _WinAPI_ShowWindow($hwndMain, @SW_SHOW)

    While True
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
EndFunc   ;==>Example

Func MyWM_COMMAND($hwnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg

    Local $nOldColor = $nColor

    Switch _WinAPI_LoWord($wParam)
        Case $IDC_RED
            ; Farbwert (BGR) in globale Variable ablegen
            $nColor = 0x000000FF

        Case $IDC_GREEN
            ; Farbwert (BGR) in globale Variable ablegen
            $nColor = 0x0000FF00

        Case $IDC_BLUE
            ; Farbwert (BGR) in globale Variable ablegen
            $nColor = 0x00FF0000
    EndSwitch

    If $nOldColor <> $nColor Then
        ; Neuzeichnen des Fensters erzwingen
        _WinAPI_InvalidateRect($hwnd, 0, True)
        _WinAPI_UpdateWindow($hwnd)
    EndIf

    Return $GUI_RUNDEFMSG
EndFunc   ;==>MyWM_COMMAND

Func MyWM_ERASEBKGND($hwnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg

    Local $hDC = $wParam, $hBrush, $hBrushOld, $rcClient

    ; Anwendungsbereich ermitteln
    $rcClient = _WinAPI_GetClientRect($hwnd)

    ; Füllmuster erzeugen
    $hBrush = _WinAPI_CreateSolidBrush($nColor)

    ; Füllmuster in den Gerätekontext einsetzen
    $hBrushOld = _WinAPI_SelectObject($hDC, $hBrush)

    ; Anwendungsbereich mit dem Füllmuster zeichnen
    _WinAPI_FillRect($hDC, DllStructGetPtr($rcClient), $hBrush)

    ; Das ursprüngliche Füllmuster wieder in den Gerätekontext einsetzen
    _WinAPI_SelectObject($hDC, $hBrushOld)

    ; Unser selbsterzeugtes Füllmuster wieder
    ; löschen, wenn wir es nicht mehr brauchen
    _WinAPI_DeleteObject($hBrush)

    Return 1
EndFunc   ;==>MyWM_ERASEBKGND

;================================ End of File =================================