Vollbild und Taskswitch

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Hyper
Beiträge: 194
Registriert: 19.04.2005 19:14

Vollbild und Taskswitch

Beitrag von Hyper »

Hallo Gefährten,

unten ist der Quelltext aus der Hilfe zu KeyboardInkey(). Wenn das Programm läuft und ich wechsle mit ALT+TAB zu einer anderen Anwendung und wieder zurück, stürzt das Programm immer ab.
Fehlermeldung Debugger: Zeile 17 (If StartDrawing(ScreenOutput())):
The specified output is NULL (0 value).
Meine Frage: Wie muss man ein PB-Vollbildprogramm machen, damit man den Task normal switchen kann?

Außerdem sieht man das Programm auch nicht als Task im Taskmanager (nur unter Prozesse).

Code: Alles auswählen

If InitSprite() And InitKeyboard() And OpenScreen(800,600,16,"")
    Repeat
      FlipBuffers()
      ClearScreen(RGB(0, 0, 0))
      
      ExamineKeyboard()
      FullText$ + KeyboardInkey()  ; fügt das nächste Zeichen zum aktuellen Text (sofern vorhanden) hinzu
      
      ; Wenn wir die 'Backspace'-Taste drücken, löschen wir das letzte Zeichen
      ;
      If KeyboardReleased(#PB_Key_Back)  
        FullText$ = Left(FullText$, Len(FullText$)-1)
      EndIf

      ; Ergebnis darstellen
      ;
      If StartDrawing(ScreenOutput())
        DrawingMode(1)
        FrontColor(RGB(128, 255, 0))
        DrawText(20, 20, "Gib einfach etwas Text ein...:")
        DrawText(20, 40, FullText$)
        StopDrawing()
      EndIf
    Until KeyboardPushed(#PB_Key_Escape)
  EndIf
PB 5.72
Benutzeravatar
Shadow-Gamer
Beiträge: 152
Registriert: 06.09.2009 13:31
Computerausstattung: NB: Intel P8700, Mobility ATI HD4650, 4GB, Win 7

Re: Vollbild und Taskswitch

Beitrag von Shadow-Gamer »

1. Guck dir mal IsScreenActive an

2. Gib deinem OpenScreen mal einen anderen Namen

Greeeeetts
Ich versuche ja nicht faul zu sein. :)
Benutzeravatar
Hyper
Beiträge: 194
Registriert: 19.04.2005 19:14

Re: Vollbild und Taskswitch

Beitrag von Hyper »

Hallo Shadow-Gamer,

danke!

Thema Programmname im Taskmanager ist erledigt.

Ich habe jetzt nach Repeat eingefügt:

Code: Alles auswählen

    If IsScreenActive() = #False
      Continue
    EndIf
Komme jetzt aber nicht mehr zurück zum Bild!? Da muss es doch ein Pattern geben...
PB 5.72
Benutzeravatar
kswb73
Beiträge: 319
Registriert: 04.02.2008 16:51
Kontaktdaten:

Re: Vollbild und Taskswitch

Beitrag von kswb73 »

Am einfachsten geht es wenn du deine ganzen Renderteil ohne FlipBuffers() mit If IsScreenActive() ... EndIf einklammerst:

Code: Alles auswählen

 If InitSprite() And InitKeyboard() And OpenScreen(800,600,16,"")
    Repeat
      FlipBuffers()
      If IsScreenActive()
      ClearScreen(RGB(0, 0, 0))
     
      ExamineKeyboard()
      FullText$ + KeyboardInkey()  ; fügt das nächste Zeichen zum aktuellen Text (sofern vorhanden) hinzu
     
      ; Wenn wir die 'Backspace'-Taste drücken, löschen wir das letzte Zeichen
      ;
      If KeyboardReleased(#PB_Key_Back) 
        FullText$ = Left(FullText$, Len(FullText$)-1)
      EndIf

      ; Ergebnis darstellen
      ;
      If StartDrawing(ScreenOutput())
        DrawingMode(1)
        FrontColor(RGB(128, 255, 0))
        DrawText(20, 20, "Gib einfach etwas Text ein...:")
        DrawText(20, 40, FullText$)
        StopDrawing()
      EndIf
    EndIf
    Until KeyboardPushed(#PB_Key_Escape)
  EndIf 
Du solltest dir generell angewöhnen IsScreenActive() zu verwenden, da du sonst eben dein Vollbild nicht minimieren kannst, wenn du 2ddrawing verwendst.
Windows XP: PB 4.31, PB 4.4, PB 4.51
Open Suse 11.2: PB 4.4
Benutzeravatar
Hyper
Beiträge: 194
Registriert: 19.04.2005 19:14

Re: Vollbild und Taskswitch

Beitrag von Hyper »

Hallo kswb73,

das ist ok, Danke, aber ich komme nach einem Task-Wechsel nicht zurück, um im Vollbild-Programm weiterzumachen...
PB 5.72
Benutzeravatar
hörmi
Beiträge: 106
Registriert: 10.07.2007 15:20
Kontaktdaten:

Re: Vollbild und Taskswitch

Beitrag von hörmi »

Hier mal ein Vorschlag von mir:

Code: Alles auswählen

If InitSprite() And InitKeyboard() And OpenScreen(800,600,16,"")
    Repeat
      If IsScreenActive()
      FlipBuffers()
      ClearScreen(RGB(0, 0, 0))
     
      ExamineKeyboard()
      FullText$ + KeyboardInkey()  ; fügt das nächste Zeichen zum aktuellen Text (sofern vorhanden) hinzu
     
      ; Wenn wir die 'Backspace'-Taste drücken, löschen wir das letzte Zeichen
      ;
      If KeyboardReleased(#PB_Key_Back) 
        FullText$ = Left(FullText$, Len(FullText$)-1)
      EndIf

      ; Ergebnis darstellen
      ;
      If StartDrawing(ScreenOutput())
        DrawingMode(1)
        FrontColor(RGB(128, 255, 0))
        DrawText(20, 20, "Gib einfach etwas Text ein...:")
        DrawText(20, 40, FullText$)
        StopDrawing()
      EndIf
    Else
    
    CloseScreen()
    OpenWindow(0,0,0,0,0,"Screen",#PB_Window_Minimize)
    
    Repeat
      Event=WaitWindowEvent()
    Until Event=#PB_Event_ActivateWindow
    CloseWindow(0)
    OpenScreen(800,600,16,"")
    
    EndIf
    Until KeyboardPushed(#PB_Key_Escape)
  EndIf
BildBild Bild
Benutzeravatar
Hyper
Beiträge: 194
Registriert: 19.04.2005 19:14

Re: Vollbild und Taskswitch

Beitrag von Hyper »

Hallo hörmi,

vielen Dank, so klappt es!
Weiß nur noch nicht richtig warum... So müssten dann ja alle Anwendungen gestrickt sein, welche es gestatten aus dem Vollbildmodus in andere Programme umzuschalten...
PB 5.72
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Vollbild und Taskswitch

Beitrag von Kaeru Gaman »

also, ich finde den Vorschlag von Hörmi äußerst konterproduktiv.
wenn man einen screen zu macht und später wieder auf, muss man sämtliche sprites neu laden.
damit wird jeder Nutzen von Alt-Tab komplett negiert, da kann man gleich ausmachen und neu starten.

viele Fullscreen-Anwendungen heutzutage sind keine echten Fullscreens sondern maximierte WindowedScreens.
mit einem WindowdScreen ist das focus-handling einfacher.
http://www.purebasic.fr/german/viewtopic.php?t=11280


was das aktuelle Problem hier betrifft, es besteht möglicher Weise zur Zeit noch ein Bug betreffs IsScreenActive.
http://www.purebasic.fr/english/viewtop ... =3&t=40439
http://www.purebasic.fr/english/viewtop ... 13&t=40344
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Hyper
Beiträge: 194
Registriert: 19.04.2005 19:14

Re: Vollbild und Taskswitch

Beitrag von Hyper »

Hallo Kaeru Gaman,

super, da wird mir jetzt einiges klarer! Offenbar haben andere an dem Thema ebenfalls schon geknobelt...
PB 5.72
Benutzeravatar
hörmi
Beiträge: 106
Registriert: 10.07.2007 15:20
Kontaktdaten:

Re: Vollbild und Taskswitch

Beitrag von hörmi »

@Kaeru Gaman: hatte ich vergessen, dass die sprites alle neu geladen werden müssen
aber mal nur so als frage wie machen die fullscreens das dann wenn sie eine andere auflösung verwenden?
BildBild Bild
Antworten