Funktionreferenz


_WinAPI_FillRect

Beschreibung anzeigen in

Füllt ein Rechteck mit dem festgelegten Füllmuster

#include <WinAPIGdiDC.au3>
_WinAPI_FillRect ( $hDC, $tRECT, $hBrush )

Parameter

$hDC Handle zu dem Gerätekontext
$tRECT eine $tagRECT Struktur oder ein Zeiger zu dieser, die die logischen Koordinaten des zu füllenden Rechtecks enthält
$hBrush Handle zu dem Füllmuster das zum füllen des Rechtecks verwendet wird

Rückgabewert

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

Bemerkungen

Das Füllmuster der durch den $hBrush Parameter identifiziert wird, kann entweder ein Handle zu einem logischen Füllmuster oder einem Farbenwert sein.
Falls ein Handle zu einem logischen Füllmuster festgelegt wird, ist _WinAPI_CreateSolidBrush() aufzurufen.
Ausserdem, könnte man ein Handle zu einem der vordefinierten Füllmuster abrufen. Dies geschieht durch die _WinAPI_GetStockObject()t Funktion.
Falls ein Farbwert für den $hBrush Parameter festgelegt wurde, so muss dieser einer der Standardsystemfarben sein (Der Wert 1 muss zu der gewählten Farbe hinzugefügt werden)

Siehe auch

Suche nach FillRect in der MSDN Bibliothek.

Beispiel

;==============================================================================
; _WinAPI_FillRect.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, _           ; Fensterstile
                $WS_CLIPCHILDREN), _
            $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, _     ; Fensterstile
                    $WS_VISIBLE, $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 $iMsg, $lParam

    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 $iMsg, $lParam

    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 =================================