#Compile Exe
#Include "win32api.inc"
'//
'// Fast way to paint a rectangular area without using a brush
'//
Sub PaintRect( ByVal hdc As Dword, rc As Rect, ByVal colour As Dword) Export
Local oldcr As Dword
oldcr = SetBkColor( hdc, colour )
ExtTextOut hdc, 0, 0, %ETO_OPAQUE, rc, "", 0, 0
SetBkColor hdc, oldcr
End Sub
Function PBMain() As Long
Local hDlg As Dword
Dialog New 0, "PaintRect Demo",,, 160, 155, _
%WS_CAPTION Or %WS_SYSMENU Or %WS_THICKFRAME, 0 To hDlg
Dialog Show Modal hDlg Call DlgProc
End Function
CallBack Function DlgProc() As Long
Select Case As Long CbMsg
Case %WM_ERASEBKGND
Local hDC As Dword
Local rc As Rect
' Paint the background ourselves. Rather than creating a brush
' and having to destroy it when finished, we simply call the
' PaintRect function. This function is most useful when creating
' more involved drawing actions because it reduces the code
' needed.
' Fill the entire screen with blue and then create a smaller
' rectangle in an rgb color.
hDC = CbWParam
GetClientRect CbHndl, rc
PaintRect hDC, rc, %Blue
' Create the smaller rectangle
SetRect rc, 5, 5, 50, 100
PaintRect hDC, rc, RGB( 100, 200, 0 )
Function = %TRUE
End Select
End Function
Nice, thanks for the example Paul.