Seite 2 von 2

Verfasst: 27.10.2004 17:28
von AndyMars
Na wenn Du meinst ;)

Du hast schon recht, den ClearScreen(0,0,0) im #wm_paint braucht es nicht für das Beispiel. Er steht aber nur für irgendwelche Zeichenoperationen...

Man könnte auch ClearScreen(0,0,0) und FlipBuffers() im Eventloop weglassen - geht dann auch immer noch... :)

Ist ja nur exemplarisch. Ist ja auch die Frage was Du machen willst. Du zeichnest bei jedem Windowsevent, ich nur bei #wm_paint...

Fragt sich noch, ob ein solcher Mix von DirectX und Windowsevents überhaupt Sinn macht. Schnelle DirectX-Befehle - und dann auf ein Event warten?
:roll:

Verfasst: 27.10.2004 18:56
von nco2k
@AndyMars
da stimme ich dir vollkommen zu. deswegen muss jeder für sich, die frage beantworten, was sinn macht und was nicht. generell würde ich da Delay(10) : WindowEvent() verwenden, da ich bei einem OpenScreen() davon ausgehe, dass es viel mit grafik etc. zu tun haben wird. kann mich aber auch täuschen. :lol:

so hätt ichs gemacht, ist eigentlich auch (fast) das selbe:

Code: Alles auswählen

Procedure WindowCallback(hWnd, Msg, wParam, lParam) 
  Select Msg
    Case #WM_PAINT
      FlipBuffers()
  EndSelect
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

#Title = "Test"
hWnd.l = OpenWindow(0, 0, 0, 800, 600, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, #Title)
If InitSprite() = #False Or OpenWindowedScreen(hWnd, 0, 0, WindowWidth(), WindowHeight(), 0, 0, 0) = #False
  MessageRequester(#Title, "Error", #MB_ICONERROR)
  End
EndIf
SetWindowCallback(@WindowCallback())

Repeat
  Event.l = WindowEvent()
  Delay(10)
  FlipBuffers()
  ClearScreen(0, 0, 0)
  If Event = #WM_LBUTTONUP
    MessageRequester(#Title, "Move Me!")
  ElseIf Event = #WM_RBUTTONUP
    End
  EndIf
Until Event = #PB_Event_CloseWindow

End
jeder hat so seinen eigenen coding stil. :mrgreen:

denoch gute arbeit, mein posting sollte nicht negativ gewertet werden. für spiele etc im fenster, ist die idee mit dem callback echt klasse. :allright:

darauf wäre ich nie gekommen. trotzdem hoffe ich, dass fred diese unschönheit fixt, damit diese notlösungen überflüssig werden und auf allen platformen funktionieren. :twisted:

c ya,
nco2k

Verfasst: 27.10.2004 20:47
von Gerhard
Hallo Lebostein,
kann es sein, dass Du deine Sprites direkt auf ein Programm-
fenster gemalt hast?? Wenn dem so ist, dann ist es klar, dass du
für den Refresh selber sorgen musst. Das kann Windows nichtt
automatisch machen, denn Deine Zeichnung wäre dann kein
Windowsobjekt.
Wenn dem also so wäre, dann lege deine Zeichnungen doch
einfach als Image an und stelle das Image in ein ImageGadget.
Danach ist es ein Objekt von Windows und wird von Windows
OHNE dein Zutun automatisch aktualisiert. Hm?

Gruss
Gerhard