Ich habe da ein seltsames Verhalten bei der Verwendung von qt und gtk sowie bei Verwendung von Enumeration und #pb_Any bemerkt. Und ich kann mir mittlerweile keinen Reim mehr darauf machen.
Vielleicht sieht jemand von euch was da los ist und kann mir das mal erklären.
Also folgendes:
Ganz kleine App mit 2 Buttons und einem Menu.
Im vorliegenden Code wird lediglich über den Debugger jeweils "hat funktioniert" ausgegeben.
- Variante 1 mit qt als Subsystem und #pb_Any für die WindowsId
Code: Alles auswählen
Global myWin,myButton0,myButton1
Procedure showWindow()
myWin = OpenWindow(#PB_Any, 0, 0, 300, 150, "", #PB_Window_SystemMenu)
mainMenu = CreateMenu(#PB_Any, WindowID(myWin))
MenuTitle("Menu")
MenuItem(1, "Open")
myButton0 = ButtonGadget(#PB_Any, 100, 25, 100, 30, "Button_0")
myButton1 = ButtonGadget(#PB_Any, 100, 60, 100, 30, "Button_1")
EndProcedure
showWindow()
Repeat
; myeW = EventWindow()
Event=WaitWindowEvent()
myeW = EventWindow()
Select myeW
Case myWin
Select Event
Case #PB_Event_Menu ; ein Menu wurde bedient
Select EventMenu() ;welcher Menupunkt?
Case 1
Debug "hat funktioniert"
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case myButton0, myButton1
Debug "hat funktioniert"
EndSelect
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
wird das Menu angeklickt (nur erster Menupunkt ist wählbar) erfolgt NICHTS
Vertausche ich jetzt die beiden Zeilen
Event=WaitWindowEvent()
myeW = EventWindow()
zu
myeW = EventWindow()
Event=WaitWindowEvent()
wird auch die Ausgabe zum Menu korrekt angesteuert.
- Variante 2 mit gtk2 als Subsystem -> alles korrekt, ohne Umstellen der beiden obigen Zeilen
- Variante 3 mit einer Enumeration für die WindowsId -> beide Subsysteme liefern korrekte Ergebnisse.
Code: Alles auswählen
Enumeration
#myWin
EndEnumeration
Global myWin,myButton0,myButton1
Procedure showWindow()
OpenWindow(#myWin, 0, 0, 300, 150, "", #PB_Window_SystemMenu)
mainMenu = CreateMenu(#PB_Any, WindowID(#myWin))
MenuTitle("Menu")
MenuItem(1, "Open")
myButton0 = ButtonGadget(#PB_Any, 100, 25, 100, 30, "Button_0")
myButton1 = ButtonGadget(#PB_Any, 100, 60, 100, 30, "Button_1")
EndProcedure
showWindow()
Repeat
Event=WaitWindowEvent()
myeW = EventWindow()
Select myeW
Case #myWin
Select Event
Case #PB_Event_Menu ; ein Menu wurde bedient
Select EventMenu() ;welcher Menupunkt?
Case 1
Debug "hat funktioniert"
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case myButton0, myButton1
Debug "hat funktioniert"
EndSelect
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
WaitWindowsEvent sollte in jedem Fall doch VOR EventWindos ausgeführt werden?
Wie kann eine Enumeration sich anders verhalten als eine Zuweisung mit #Pb_Any?
Was haben die Subsysteme für Unterschiede?
Da das ja in Kombination von Subsystem + ID-Zuweisung erfolgt ... ist das in Bug in PB ? oder im Subsystem ? oder bin ich einfach zu blöde?
Da das Verhalten am Laptop sowie am Desktop vorliegt, kann's kaum die Hardware sein
Für erklärende Hilfe wäre ich sehr, sehr dankbar.
Das ganze kostete mich jetzt schon STUNDEN !!!!
.... Peter ....