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)