Den DC bekommst du, wenn du die Nachricht WM_PAINT abfängst und entsprechend bearbeitest. (Ausserhalb von WM_PAINT ermittelst du den DC mit der Funktion GetDC_(hWnd) Dann aber ReleaseDC_() nicht vergessen!)
Um das Zeichnen zu beginnen musst du BeginPaint_(hWnd,Paint) aufrufen.
hWnd - Ist das Handle des Fensters auf dem du Zeichnen willst.
Paint - Paint ist ein Pointer auf die Struktur "PAINTSTRUCT"
Nach dem Aufruf von BeginPaint findest du im Feld Paint\hDC den DC des Fensters.
Anschliessend fürst du Zeichenoperationen aus. (Für den Kreis: Ellipse_(Paint\hDC,100,100,200,200))
Wenn du alles gezeichnet hast rufst du EndPaint_(hWnd,Paint) auf.
Hier ein kleines Beispiel:
Code: Alles auswählen
Procedure.l Callback(hWnd.l,Message.l,wParam.l,lParam.l)
Protected Paint.PAINTSTRUCT
Select Message
Case #WM_PAINT ;{
BeginPaint_(hWnd,Paint)
Ellipse_(Paint\hDC,100,100,200,200)
Rectangle_(Paint\hDC,300,300,400,320)
EndPaint_(hWnd,Paint)
ProcedureReturn #False
;}
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
OpenWindow(0,100,100,640,480,"DC",#PB_Window_MinimizeGadget |#PB_Window_ScreenCentered)
SetWindowCallback(@Callback(),0)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
End
PS: Ich hoffe du meinst überhaupt das.
