Seite 1 von 1

Fehler bei GetGadgetState()

Verfasst: 07.06.2006 00:42
von PureLust
Und noch ein kleiner Bug der mir aufgefallen ist.

Und zwar liefert GetGadgetState() im FullScreen-Modus kein Ergebnis mehr nachdem ein SetActiveGadget() ausgeführt wurde.

Für jeden der etwas der englischen Sprache mächtig ist habe ich mal einen kleinen Beispielcode beigepackt, der den Fehler demonstriert.
Einfach immer die Cursortasten (rauf/runter) benutzen um den TrackBar-Wert zu ändern.
An sonsten einfach den Anweisungen auf dem Bildschirm folgen.

Auch diesen Bug hatte ich bereits zur Beta-Phase per Mail an André geschickt und kein Feedback erhalten.
Daher nun also auch diesen Bug mal als offiziellen Forumsbeitrag.

Code: Alles auswählen

;
; 
; Little 'quick & durty' example, to demonstrate 
; that 'SetActiveGadget()' or 'TrackBarGadget()' 
; makes some Trouble, if a Full-Screen is active. 
; 
; Just start and follow the instructions displayed on the Screen. 
; 
Enumeration 
#Key_Esc 
#Key_CsrUp 
#Key_CsrDown 
#Key_Space 
#Key_F 
#GadgetTrackbar 
#GadgetActivate 
EndEnumeration 
InitSprite() 
InitKeyboard() 
OpenWindow(0,1,1,800,400,"kjhkj") 
CreateGadgetList(WindowID(0)) 
TrackBarGadget(#GadgetTrackbar,650,20,20,360,0,300,#PB_TrackBar_Vertical) 
AddKeyboardShortcut(0,#PB_Shortcut_Escape ,#Key_ESC) 
AddKeyboardShortcut(0,#PB_Shortcut_Up     ,#Key_CsrUp) 
AddKeyboardShortcut(0,#PB_Shortcut_Down   ,#Key_CsrDown) 
AddKeyboardShortcut(0,#PB_Shortcut_Space  ,#Key_Space) 
AddKeyboardShortcut(0,#PB_Shortcut_F      ,#Key_F) 
OpenWindowedScreen(WindowID(0),0,0,600,400,0,0,0) 
Repeat 
   Event = WindowEvent() 
   Menu  = EventMenu() 
   If FullScreen 
      ExamineKeyboard() 
      If KeyboardPushed(#PB_Key_Escape) 
         Event = #PB_Event_Menu 
         Menu  = #Key_ESC 
      ElseIf KeyboardPushed(#PB_Key_Up) 
         Event = #PB_Event_Menu 
         Menu  = #Key_CsrUp 
      ElseIf KeyboardPushed(#PB_Key_Down) 
         Event = #PB_Event_Menu 
         Menu  = #Key_CsrDown 
      ElseIf KeyboardPushed(#PB_Key_Space) 
         Event = #PB_Event_Menu 
         Menu  = #Key_Space 
      ElseIf KeyboardPushed(#PB_Key_F) 
         Event = #PB_Event_Menu 
         Menu  = #Key_F 
      EndIf 
   EndIf 
   If Event 
      Select Event 
      Case #PB_Event_Menu 
         Select Menu 
         Case #Key_ESC 
            Quit = 1 
         Case #Key_CsrUp 
            SetGadgetState(#GadgetTrackbar,GetGadgetState(#GadgetTrackbar)+1) 
         Case #Key_CsrDown 
            SetGadgetState(#GadgetTrackbar,GetGadgetState(#GadgetTrackbar)-1) 
         Case #Key_Space 
            SetActiveGadget(#GadgetTrackbar) 
         Case #Key_F 
            CloseScreen() 
            FullScreen = 1-FullScreen 
            If FullScreen 
               OpenScreen(640,480,32,"Test") 
            Else 
               OpenWindowedScreen(WindowID(0),0,0,600,400,0,0,0) 
            EndIf 
         EndSelect 
      Case #PB_Event_CloseWindow 
         Quit = 1 
      EndSelect 
   EndIf 
   ClearScreen(0) 
   StartDrawing(ScreenOutput()) 
   DrawText(10,10,"Trackbar-Value : "+Str(GetGadgetState(#GadgetTrackbar))+"   "+Str(ElapsedMilliseconds()),$ffffff,0)   ; <<<< Zeile geändert !!!
   If Not FullScreen 
      DrawText(10,50,"1. Use CsrUp / CsrDown to change Trackbar Values", $ffffff,0) 
      DrawText(10,80,"2. Press 'f' to switch to Full-Screen Mode", $ffffff,0) 
   Else 
      DrawText(10, 50,"1. Use CsrUp / CsrDown to see, that Trackbar still works", $ffffff,0) 
      DrawText(10, 80,"2. Press 'Space' to activate TrackbarGadget, using 'SetActiveGadget()'", $ffffff,0) 
      DrawText(10,110,"3. Use CsrUp / CsrDown to see, that Trackbar-Value does NOT change anymore", $ffffff,0) 
      DrawText(10,140,"4. Press 'f' to leave Full-Screen Mode", $ffffff,0) 
      DrawText(10,310,"PS: The Problem seems to be in READING the Value using 'GetGadgetState()'", $ffffff,0) 
      DrawText(40,340,"because you will still change the Value, but you cannot READ", $ffffff,0) 
      DrawText(40,370,"it anymore with 'GetGadgetState()'.", $ffffff,0) 
   EndIf 
   StopDrawing() 
   FlipBuffers(2) 
   Delay(2) 
Until Quit 
CloseScreen() 
CloseWindow(0)
Grüße, PureLust.

Verfasst: 07.06.2006 01:51
von Macros
Code convertiert zu 3.94: (funtzt auch nicht)

Code: Alles auswählen

;
; Little 'quick & durty' example, to demonstrate
; that 'SetActiveGadget()' or 'TrackBarGadget()'
; makes some Trouble, if a Full-Screen is active.
;
; Just start and follow the instructions displayed on the Screen.
;
Enumeration
#Key_Esc
#Key_CsrUp
#Key_CsrDown
#Key_Space
#Key_F
#GadgetTrackbar
#GadgetActivate
EndEnumeration
InitSprite()
InitKeyboard()
OpenWindow(0,1,1,800,400,#PB_Window_SystemMenu,"kjhkj")
CreateGadgetList(WindowID(0))
TrackBarGadget(#GadgetTrackbar,650,20,20,360,0,300,#PB_TrackBar_Vertical)
AddKeyboardShortcut(0,#PB_Shortcut_Escape ,#Key_ESC)
AddKeyboardShortcut(0,#PB_Shortcut_Up     ,#Key_CsrUp)
AddKeyboardShortcut(0,#PB_Shortcut_Down   ,#Key_CsrDown)
AddKeyboardShortcut(0,#PB_Shortcut_Space  ,#Key_Space)
AddKeyboardShortcut(0,#PB_Shortcut_F      ,#Key_F)
OpenWindowedScreen(WindowID(0),0,0,600,400,0,0,0)
Repeat
   Event = WindowEvent()
   Menu  = EventMenuID()
   If FullScreen
      ExamineKeyboard()
      If KeyboardPushed(#PB_Key_Escape)
         Event = #PB_Event_Menu
         Menu  = #Key_ESC
      ElseIf KeyboardPushed(#PB_Key_Up)
         Event = #PB_Event_Menu
         Menu  = #Key_CsrUp
      ElseIf KeyboardPushed(#PB_Key_Down)
         Event = #PB_Event_Menu
         Menu  = #Key_CsrDown
      ElseIf KeyboardPushed(#PB_Key_Space)
         Event = #PB_Event_Menu
         Menu  = #Key_Space
      ElseIf KeyboardPushed(#PB_Key_F)
         Event = #PB_Event_Menu
         Menu  = #Key_F
      EndIf
   EndIf
   If Event
      Select Event
      Case #PB_Event_Menu
         Select Menu
         Case #Key_ESC
            Quit = 1
         Case #Key_CsrUp
            SetGadgetState(#GadgetTrackbar,GetGadgetState(#GadgetTrackbar)+1)
         Case #Key_CsrDown
            SetGadgetState(#GadgetTrackbar,GetGadgetState(#GadgetTrackbar)-1)
         Case #Key_Space
            ActivateGadget(#GadgetTrackbar)
         Case #Key_F
            CloseScreen()
            FullScreen = 1-FullScreen
            If FullScreen
               OpenScreen(640,480,32,"Test")
            Else
               OpenWindowedScreen(WindowID(0),0,0,600,400,0,0,0)
            EndIf
         EndSelect
      Case #PB_Event_CloseWindow
         Quit = 1
      EndSelect
   EndIf
   ClearScreen(0,0,0)
   StartDrawing(ScreenOutput())
   Locate(10,10)
   DrawingMode(1)
   FrontColor(255,255,255)
      DrawText("Trackbar-Value : "+Str(GetGadgetState(#GadgetTrackbar)))
   If FullScreen=0
   Locate(10,50)
      DrawText("1. Use CsrUp / CsrDown to change Trackbar Values")
      Locate(10,80)
      DrawText("2. Press 'F' to switch to Full-Screen Mode")
   Else
   Locate(10,50)
      DrawText("1. Use CsrUp / CsrDown to see, that Trackbar still works")
      Locate(10,80)
      DrawText("2. Press 'Space' to activate TrackbarGadget, using 'SetActiveGadget()'")
      Locate(10,110)
      DrawText("3. Use CsrUp / CsrDown to see, that Trackbar-Value does NOT change anymore")
      Locate(10,140)
      DrawText("4. Press 'F' to leave Full-Screen Mode")
      Locate(10,310)
      DrawText("PS: The Problem seems to be in READING the Value using 'GetGadgetState()'")
      Locate(40,340)
      DrawText("because you will still change the Value, but you cannot READ")
      Locate(40,370)
      DrawText("it anymore with 'GetGadgetState()'.")
   EndIf
   StopDrawing()
   FlipBuffers(2)
   Delay(2)
Until Quit
CloseScreen()
CloseWindow(0)
Aufgrund dessen, das die Taste f Auch nicht mehr funktioniert
nehme ich an, das einfach der Focus auf das Gadget gesetzt wird, und er gar nicht mehr auf den Screen zeichnen kann.

Verfasst: 07.06.2006 02:17
von PureLust
Hallo Macros,

das 'f' nicht mehr funktinoiert kann ich nicht nachvollziehen - bei mir kannst Du mit 'f' zu jederzeit zwischen Vollbild und Windowed-Mode hin und herschalten.

Das der Focus auf das Gadget geschaltet wird ist natürlich klar, aber warum sollte er dann nicht mehr auf den Screen zeichnen können?

Um diese Sache aber mal zu überprüfen, habe ich in Zeile 77 noch 'ne kleine Veränderung vorgenommen, so dass nun ein permanenter Zähler mitläuft.
Hieran kann man dann erkennen, dass Du mit Deiner Vermutung scheinbar richtig lagst und er nicht mehr auf den Screen zeichnen kann.

Die Frage ist nur: WARUM NICHT ???

Denn im Windowed-Mode läuft der Zähler ja auch permanent mit.
Hätte Jemand evt. eine plausible Erklärung dafür?

ThanX und Gruß,
PureLust.

Verfasst: 07.06.2006 08:29
von real
Ich tippe darauf, dass das falsche FENSTER den Focus erhält.

Wenn Du OpenWindowedScreen() aufruft, wird ein Screen auf dem erstellten Window 0 erzeugt, somit hat auch Dein Window automatische immer den Focus (und SetActiveGadget macht das, was es soll). Wenn Du OpenScreen aufrufst, wird zusätzlich zu Deinem Window 0 ein zweites Vollbild-Fenster erzeugt (siehst Du, wenn Du Alt-Tab drückst). Wenn Du jetzt ein SetActiveGadget machst, verliert das Vollbild den Focus und Du setzt den Focus auf Dein Window 0. Deshalb aktualisiert er Dein Vollbild nicht mehr.

Versuch mal das (aber wie Du schon geschrieben hast: quick & dirty):

Code: Alles auswählen

; 
; 
; Little 'quick & durty' example, to demonstrate 
; that 'SetActiveGadget()' or 'TrackBarGadget()' 
; makes some Trouble, if a Full-Screen is active. 
; 
; Just start and follow the instructions displayed on the Screen. 
;
Global WindowID
 
Enumeration 
#Key_Esc 
#Key_CsrUp 
#Key_CsrDown 
#Key_Space 
#Key_F 
#GadgetTrackbar 
#GadgetActivate 
EndEnumeration 
InitSprite() 
InitKeyboard() 
OpenWindow(0,1,1,800,400,"kjhkj") 
CreateGadgetList(WindowID(0)) 
TrackBarGadget(#GadgetTrackbar,650,20,20,360,0,300,#PB_TrackBar_Vertical) 
AddKeyboardShortcut(0,#PB_Shortcut_Escape ,#Key_ESC) 
AddKeyboardShortcut(0,#PB_Shortcut_Up     ,#Key_CsrUp) 
AddKeyboardShortcut(0,#PB_Shortcut_Down   ,#Key_CsrDown) 
AddKeyboardShortcut(0,#PB_Shortcut_Space  ,#Key_Space) 
AddKeyboardShortcut(0,#PB_Shortcut_F      ,#Key_F) 
OpenWindowedScreen(WindowID(0),0,0,600,400,0,0,0) 
Repeat 
   WindowID = ScreenID()
   Event = WindowEvent() 
   Menu  = EventMenu() 
   If FullScreen 
      ExamineKeyboard() 
      If KeyboardPushed(#PB_Key_Escape) 
         Event = #PB_Event_Menu 
         Menu  = #Key_ESC 
      ElseIf KeyboardPushed(#PB_Key_Up) 
         Event = #PB_Event_Menu 
         Menu  = #Key_CsrUp 
      ElseIf KeyboardPushed(#PB_Key_Down) 
         Event = #PB_Event_Menu 
         Menu  = #Key_CsrDown 
      ElseIf KeyboardPushed(#PB_Key_Space) 
         Event = #PB_Event_Menu 
         Menu  = #Key_Space 
      ElseIf KeyboardPushed(#PB_Key_F) 
         Event = #PB_Event_Menu 
         Menu  = #Key_F 
      EndIf 
   EndIf 
   If Event 
      Select Event 
      Case #PB_Event_Menu 
         Select Menu 
         Case #Key_ESC 
            Quit = 1 
         Case #Key_CsrUp 
            SetGadgetState(#GadgetTrackbar,GetGadgetState(#GadgetTrackbar)+1) 
         Case #Key_CsrDown 
            SetGadgetState(#GadgetTrackbar,GetGadgetState(#GadgetTrackbar)-1) 
         Case #Key_Space 
            SetActiveGadget(#GadgetTrackbar) 
         Case #Key_F 
            CloseScreen() 
            FullScreen = 1-FullScreen 
            If FullScreen 
               OpenScreen(640,480,32,"Test")
               WindowID = ScreenID()
            Else 
               OpenWindowedScreen(WindowID(0),0,0,600,400,0,0,0)
               WindowID = ScreenID()
            EndIf 
         EndSelect 
      Case #PB_Event_CloseWindow 
         Quit = 1 
      EndSelect 
   EndIf 
   SetFocus_(WindowID)
   ClearScreen(0) 
   StartDrawing(ScreenOutput()) 
   DrawText(10,10,"Trackbar-Value : "+Str(GetGadgetState(#GadgetTrackbar))+"   "+Str(ElapsedMilliseconds()),$ffffff,0)   ; <<<< Zeile geändert !!! 
   If Not FullScreen 
      DrawText(10,50,"1. Use CsrUp / CsrDown to change Trackbar Values", $ffffff,0) 
      DrawText(10,80,"2. Press 'f' to switch to Full-Screen Mode", $ffffff,0) 
   Else 
      DrawText(10, 50,"1. Use CsrUp / CsrDown to see, that Trackbar still works", $ffffff,0) 
      DrawText(10, 80,"2. Press 'Space' to activate TrackbarGadget, using 'SetActiveGadget()'", $ffffff,0) 
      DrawText(10,110,"3. Use CsrUp / CsrDown to see, that Trackbar-Value does NOT change anymore", $ffffff,0) 
      DrawText(10,140,"4. Press 'f' to leave Full-Screen Mode", $ffffff,0) 
      DrawText(10,310,"PS: The Problem seems to be in READING the Value using 'GetGadgetState()'", $ffffff,0) 
      DrawText(40,340,"because you will still change the Value, but you cannot READ", $ffffff,0) 
      DrawText(40,370,"it anymore with 'GetGadgetState()'.", $ffffff,0) 
   EndIf 
   StopDrawing() 
   FlipBuffers(2) 
   Delay(2) 
Until Quit 
CloseScreen() 
CloseWindow(0)

Verfasst: 07.06.2006 09:36
von Kaeru Gaman
seh ich das richtig, dass du versuchst nen zweiten screen zu öffnen?

geht in PB nicht, immer nur ein screen zur zeit möglich.

Verfasst: 07.06.2006 09:41
von real
@Kaeru Gaman:
Das versucht er nicht. Er schließt den "alten" vorher mittels CloseScreen()

Verfasst: 07.06.2006 10:15
von Kaeru Gaman
ok... hab ich dann übersehen...

Verfasst: 07.06.2006 12:36
von PureLust
Halle real,

mit dem Window-Focus scheinst Du wohl recht zu haben.
Dennoch sind mir 2 Dinge ein wenig unverständlich:

1. Warum sollte einen Vollbild-Screen nicht mehr aktualisieren, wenn dieser nicht mehr den Focus hat?

2. Auch dies scheint nicht immer konsistent der Fall zu sein !!!
Ich habe nachfolgenden Code mal so abgeändert, das der Focus permanent auf das Fenster (also nicht den Screen) gelenkt wird.
Auch wird nun der aktuelle Modus angegeben in dem er sich zum Zeitpunkt des Draws befindet (also FullScreen oder Windowed-Screen).
Hieran kann man erkennen, dass der erste Frame im FullScreen-Modus sehrwohl gezeichnet wird.
Weiterhin machte es mich etwas stutzig, dass der Screen noch ab und zu refreshed wird, wenn man mit der Maus klickt.
Aus diesem Grund habe ich noch eine Anzeige hinzugefügt, die angibt ob der Screen aktiv ist oder nicht (Abfrage per "IsScreenActive()").
Dies zeigt, dass doch scheinbar eine Ausgabe und ein Refresh stattfinden kann wenn der Screen nicht aktiv ist.
Womit wiederum doppeltes Gewicht auf oben genannte Frage in Punkt 1. fällt.

Alles in allem meiner Meinung nach ein sehr unlogisches und inkonsistentes Verhalten.
Oder hab ich da immer noch irgendwo einen Denkfehler? :roll:

Code: Alles auswählen

; 
; 
; Little 'quick & durty' example, to demonstrate 
; that 'SetActiveGadget()' or 'TrackBarGadget()' 
; makes some Trouble, if a Full-Screen is active. 
; 
; Just start and follow the instructions displayed on the Screen. 
; 
Global WindowID 
  
Enumeration 
#Key_Esc 
#Key_CsrUp 
#Key_CsrDown 
#Key_Space 
#Key_F 
#GadgetTrackbar 
#GadgetActivate 
EndEnumeration 
InitSprite() 
InitKeyboard() 
OpenWindow(0,1,1,800,400,"kjhkj") 
CreateGadgetList(WindowID(0)) 
TrackBarGadget(#GadgetTrackbar,650,20,20,360,0,300,#PB_TrackBar_Vertical) 
AddKeyboardShortcut(0,#PB_Shortcut_Escape ,#Key_ESC) 
AddKeyboardShortcut(0,#PB_Shortcut_Up     ,#Key_CsrUp) 
AddKeyboardShortcut(0,#PB_Shortcut_Down   ,#Key_CsrDown) 
AddKeyboardShortcut(0,#PB_Shortcut_Space  ,#Key_Space) 
AddKeyboardShortcut(0,#PB_Shortcut_F      ,#Key_F) 
OpenWindowedScreen(WindowID(0),0,0,600,400,0,0,0) 
Repeat 
   ;WindowID = ScreenID() 
   WindowID = WindowID(0)    ; <<<< Zeile geändert !!! 
   Event = WindowEvent()
   Repeat : LastEvent : If LastEvent <> 0 : Event = LastEvent : EndIf : Until LastEvent=0   ; <<< Eventbuffer leeren, der sich während des Delay(50) aufgebaut haben kann
   Menu  = EventMenu() 
   If FullScreen 
      ExamineKeyboard() 
      If KeyboardPushed(#PB_Key_Escape) 
         Event = #PB_Event_Menu 
         Menu  = #Key_ESC 
      ElseIf KeyboardPushed(#PB_Key_Up) 
         Event = #PB_Event_Menu 
         Menu  = #Key_CsrUp 
      ElseIf KeyboardPushed(#PB_Key_Down) 
         Event = #PB_Event_Menu 
         Menu  = #Key_CsrDown 
      ElseIf KeyboardPushed(#PB_Key_Space) 
         Event = #PB_Event_Menu 
         Menu  = #Key_Space 
      ElseIf KeyboardPushed(#PB_Key_F) 
         Event = #PB_Event_Menu 
         Menu  = #Key_F 
      EndIf 
   EndIf 
   If Event 
      Select Event 
      Case #PB_Event_Menu 
         Select Menu 
         Case #Key_ESC 
            Quit = 1 
         Case #Key_CsrUp 
            SetGadgetState(#GadgetTrackbar,GetGadgetState(#GadgetTrackbar)+1) 
         Case #Key_CsrDown 
            SetGadgetState(#GadgetTrackbar,GetGadgetState(#GadgetTrackbar)-1) 
         Case #Key_Space 
            SetActiveGadget(#GadgetTrackbar) 
         Case #Key_F 
            CloseScreen() 
            FullScreen = 1-FullScreen 
            If FullScreen 
               OpenScreen(640,480,32,"Test") 
               WindowID = ScreenID() 
            Else 
               OpenWindowedScreen(WindowID(0),0,0,600,400,0,0,0) 
               WindowID = ScreenID() 
            EndIf 
         EndSelect 
      Case #PB_Event_CloseWindow 
         Quit = 1 
      EndSelect 
   EndIf 
   SetFocus_(WindowID)
   Delay(50)   ; <<<< Zeile hinzugefügt !!!
   ClearScreen(0) 
   StartDrawing(ScreenOutput()) 
   DrawText(10,10,"Trackbar-Value : "+Str(GetGadgetState(#GadgetTrackbar))+"   "+Str(ElapsedMilliseconds()),$ffffff,0)   ; <<<< Zeile geändert !!! 
   DrawText(260,10,"Screen "+StringField("Inactive|Active",1+IsScreenActive(),"|"),$ffffff,0)   ; <<<< Zeile hinzugefügt !!! 
   DrawText(380,10,"Mode : "+StringField("Windowed-Screen|FullScreen",1+FullScreen,"|"),$ffffff,0)   ; <<<< Zeile hinzugefügt !!! 
   
   LineXY(Random(640),Random(400),Random(640),Random(400),RGB(128,0,255))
   If Not FullScreen 
      DrawText(10,50,"1. Use CsrUp / CsrDown to change Trackbar Values", $ffffff,0) 
      DrawText(10,80,"2. Press 'f' to switch to Full-Screen Mode", $ffffff,0) 
   Else 
      DrawText(10, 50,"1. Use CsrUp / CsrDown to see, that Trackbar still works", $ffffff,0) 
      DrawText(10, 80,"2. Press 'Space' to activate TrackbarGadget, using 'SetActiveGadget()'", $ffffff,0) 
      DrawText(10,110,"3. Use CsrUp / CsrDown to see, that Trackbar-Value does NOT change anymore", $ffffff,0) 
      DrawText(10,140,"4. Press 'f' to leave Full-Screen Mode", $ffffff,0) 
      DrawText(10,310,"PS: The Problem seems to be in READING the Value using 'GetGadgetState()'", $ffffff,0) 
      DrawText(40,340,"because you will still change the Value, but you cannot READ", $ffffff,0) 
      DrawText(40,370,"it anymore with 'GetGadgetState()'.", $ffffff,0) 
   EndIf 
   StopDrawing() 
   FlipBuffers(0) 
   Delay(2) 
Until Quit 
CloseScreen() 
CloseWindow(0)
Grüße, PL.

Verfasst: 07.06.2006 13:26
von real
Du hast diese

Code: Alles auswählen

            If FullScreen 
               OpenScreen(640,480,32,"Test") 
               WindowID = ScreenID() 
            Else 
               OpenWindowedScreen(WindowID(0),0,0,600,400,0,0,0) 
               WindowID = ScreenID() 
            EndIf
Passage übersehen. In diesem Moment (bis zum nächsten Schleifendurchlauf) enthält WindowID doch den Wert des Vollscreens, zeichnet also einen Frame des Vollscreens.

Wenn Du die Maus klickst ist es logisch, dass der Vollscreen aktualisiert wirst, weil Du damit den Focus manuell auf den Vollscreen legst, bis er beim nächsten Schleifendurchlauf wieder auf das Window 0 gelegt wird.

Verfasst: 07.06.2006 13:38
von PureLust
real hat geschrieben:Du hast diese ... Passage übersehen. In diesem Moment (bis zum nächsten Schleifendurchlauf) enthält WindowID doch den Wert des Vollscreens, zeichnet also einen Frame des Vollscreens.
Ist mir inzwischen auch schon aufgefallen - dies erklärt, warum nach dem Fullscreen der erste Frame gezeichnet wird ("IsScreenActive()" gibt ja zu diesem Zeitpunkt auch noch ein AKTIV zurück).
real hat geschrieben:Wenn Du die Maus klickst ist es logisch, dass der Vollscreen aktualisiert wirst, weil Du damit den Focus manuell auf den Vollscreen legst, bis er beim nächsten Schleifendurchlauf wieder auf das Window 0 gelegt wird.
Das war auch mein erster Gedanke .... aber das scheint nicht ganz so zu stimmen.
Denn warum gibt "IsScreenActive()" dann aus, dass der Screen NICHT aktiv ist?