Bitte könnt ihr mir mal den DC (Device Context) erklären ich habs immernoch nicht verstanden... danke also ich hänge gerade an so einer position wo ich ein hwnd bekommen habe auf dem ich einen kleinen Kreis Zeichnen möchte (r=10 pix) aber wie zum hencker funktioniert der dc ich bekomme immer nur overflows oder errors, weil ich auf dem falschen dinge zeichne, bitte bitte bitte bitte HILFFFFFFFFE!!!
Gruß MASH
UND DANKE
			
			
									
									DC ich habs immer noch nicht kapiert =)
DC ich habs immer noch nicht kapiert =)
Danke Mark S.
						- Green Snake
- Beiträge: 1394
- Registriert: 22.02.2005 19:08
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:
PS: Ich hoffe du meinst überhaupt das. 
  
			
			
									
									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.
 
  
-.-"
						- Green Snake
- Beiträge: 1394
- Registriert: 22.02.2005 19:08
 
 Falls du noch Farbe ins Spiel bringen willst, dann schau dir mal die Befehle CreateSolidBrush_(), CreatePen_() und SelectObject_() nach. (Da findest du noch einen Haufen weiterer Befehle
 )
 )Und die goldene Regel nie vergessen: Alle Objekte:
hObj = CreateSolidBrush_() am Schluss immer schön mit DeleteObject_(hObj) freigeben
 
 [Frage]
Bleiben Objekte, die nicht mit DeleteObject_() gelöscht wurde nach dem Beenden des Programms immer noch im Speicher?
[/Frage]
-.-"
						

 .
.