Hallo Welt in OpenWindowedScreen()

Anfängerfragen zum Programmieren mit PureBasic.
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Hallo Welt in OpenWindowedScreen()

Beitrag von Dare Devil »

Hallo!
Ich bin gerade dabei ein Hallo Welt in allen moeglichen Methoden auszugeben... Im Konsolenfenster, im MessageRequester und im Windows-Fenster lief alles wunderbar... Aber bei OpenWindowedScreen() hab ich Probleme...

Irgendwie wird mein Text einfach nicht angezeigt :cry:

Ich benutze PB 4.20

Code: Alles auswählen

If InitSprite() = 0
    MessageRequester("Fehler", "Konnte den Bildschirmmodus nicht initialisieren")
    End
EndIf

If OpenWindow(1, 100, 100, 200, 200, "Grafikfenster-Hallo Welt") = 0
    MessageRequester("Fehler", "Konnte Windows-Fenster nicht oeffnen")
    End
EndIf

If OpenWindowedScreen(WindowID(1), 0, 0, 200, 200, 0, 0, 0) = 0
    MessageRequester("Fehler", "Fenster konnte aus unbekanntem Grund nicht gestartet werden.")
    End
EndIf


If StartDrawing(WindowOutput(1)) = 0
    MessageRequester("Fehler", "Zeichenoperationen konnten nicht ausgefuehrt werden")
    End
EndIf

DrawText(50, 20, "Hallo Welt im Grafikmodus-Fenster!", RGB(255, 0, 0), 0)

StopDrawing()

FlipBuffers()

Repeat
    EventID = WindowEvent()
    
    If EventID = #PB_Event_CloseWindow
        Break
    EndIf
ForEver
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

du must das Drawing output auch auf den Screen richten, nicht auf das Fenster.

außerdem ist es bei screen anwendungen immer sinnvoll, die ausgabe in eine schleife zu packen.
schau dir bitte mal das beispiel zum Windowed Screen in der Help an.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag von Dare Devil »

Kaeru Gaman hat geschrieben:du must das Drawing output auch auf den Screen richten, nicht auf das Fenster.

außerdem ist es bei screen anwendungen immer sinnvoll, die ausgabe in eine schleife zu packen.
schau dir bitte mal das beispiel zum Windowed Screen in der Help an.
In der Hilfe wurde SpriteOutput() benutzt... und das habe ich nich kapiert...

Jetzt funktionierts ja mit ScreenOutput() :)

BTW: Fehlt noch irgendein "Hallo Welt"?
hier meine bisherigen Hallo Welt-Ausgaben:

Code: Alles auswählen

OpenConsole()
PrintN("Hallo Welt in einem Konsolenprogramm!" + Chr(13) + Chr(10))
PrintN("Enter druecken, um fortzufahren ...!")
Input()
CloseConsole()

MessageRequester("Hallo Welt", "Hallo Welt in einer MessageBox!")

If OpenWindow(0, 400, 200, 200, 200, "Hallo Welt") = 0
    MessageRequester("Fehler", "Fenster konnte aus unbekanntem Grund nicht gestartet werden.")
    End
EndIf

If CreateGadgetList(WindowID(0))
    TextGadget(1, 50, 40, 150, 160, "Hallo Welt in einem Fenster!")
    
    ButtonGadget(2, 70, 100, 100, 40, "Schliessen")
EndIf
    
Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
        Break
    ElseIf EventID = #PB_Event_Gadget
        If EventGadget() = 2
            Break
        EndIf
    EndIf
ForEver

CloseWindow(0)

If InitSprite() = 0
    MessageRequester("Fehler", "Konnte den Bildschirmmodus nicht initialisieren")
    End
EndIf

If OpenWindow(1, 100, 100, 300, 300, "Grafikfenster-Hallo Welt") = 0
    MessageRequester("Fehler", "Konnte Windows-Fenster nicht oeffnen")
    End
EndIf

If OpenWindowedScreen(WindowID(1), 0, 0, 300, 300, 0, 0, 0) = 0
    MessageRequester("Fehler", "Fenster konnte aus unbekanntem Grund nicht gestartet werden.")
    End
EndIf


If StartDrawing(ScreenOutput()) = 0
    MessageRequester("Fehler", "Zeichenoperationen konnten nicht ausgefuehrt werden")
    End
EndIf

DrawText(10, 20, "Hallo Welt im Grafikmodus-Fenster!", RGB(255, 0, 0), 0)

StopDrawing()

FlipBuffers()

Repeat
    EventID = WindowEvent()
    
    If EventID = #PB_Event_CloseWindow
        Break
    EndIf
ForEver
:mrgreen:


EDIT:
Und wie mach ich das? Die Ausgaben in einer Schleife packen? Denn FlipBuffers() funktioniert ja nicht, wenn StartDrawing() aktiv ist /:->
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ne, eben getrennt :mrgreen:

in der schleife erst die events holen, dann den screen löschen, dann start drawing, drawen, stopdrawing, und dann buffer flippen, und dann wieder von vorn.


achja... und mit beispiel in der Hilfe meinte ich das beispiel für den Windowedscreen... wegen der schleife.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag von Dare Devil »

Kaeru Gaman hat geschrieben:ne, eben getrennt :mrgreen:

in der schleife erst die events holen, dann den screen löschen, dann start drawing, drawen, stopdrawing, und dann buffer flippen, und dann wieder von vorn.


achja... und mit beispiel in der Hilfe meinte ich das beispiel für den Windowedscreen... wegen der schleife.
Danke, funktioniert einwandfrei :)

BTW: Hab jetzt auch ein HalloWelt im Vollbild-Modus erstellt... Ich glaub jetzt hab ich alle...
Bild + Bild

Bild
Antworten