Wenn du WindowedScreen() hast, kannst du kein 2tes Fenster öffnen, ansteueren, etc.
Das ist ein PB-spezifisches Problem.
Laut PB macht man erst mit OpenWindow() ein Fenster (da erzeugt man allerdings ein GTK-Fenster!!!).
Mit OpenWindowedScreen() erzeugt man aber kein GTK-Fenster mit einem Screen drinnen, sondern eigentlich macht man sowas wie
Code: Alles auswählen
// C Code:
SDL_SetVideoMode(width, height, depth, surface);
.
SDL und GTK sind zwei unterschiedliche Technologien. Es ist jetzt in PB schon ein Wunder, dass man bei OpenWindowedScreen() nicht 2 Fenster (nämlich ein GTK und ein SDL-Fenster) hat, sondern PB sich darum kümmert, die beiden möglichst übereinander zu legen.
Mir ist auch kein anderes Framework bekannt, welches es schafft, SDL einzubetten. Weder GTK, noch QT, noch FLTK oder sonst was können das.
Am besten vergisst du mit PB unter Linux sehr schnell wieder, Screen + Gadgets (daher auch die dazugehörigen Events und deren Handling) zu kombinieren - es geht nämlich nicht.
Btw: was sollen bitte die ganzen geschachtelten IF's?
Ein
Code: Alles auswählen
;====================
; Initialisation
;====================
If InitSprite() = 0
MessageRequester("Error", "Can't open screen & sprite enviroment!", 0)
End
EndIf
If InitSound() = 0
MessageRequester("Error", "Can't open sound & audio enviroment!", 0)
End
EndIf
If InitKeyboard() = 0
MessageRequester("Error", "Can't open keyboard & input enviroment!", 0)
End
EndIf
vor dem Code wäre IMHO leichter zu lesen und die Einrückung rutscht auch nicht so weit nach rechts.
Ist "opengl" gesetzt dann geht WindowEvent() nicht sondern erzeugt einen X-Server Fehler.
Ja, weil es von dem Fenster keinen GTK-Event gibt, weil's ein SDL-Fenster ist. X versucht hier, von GTK etwas zu bekommen, das GTK gar nicht kennt/hat.
Sobald OpenWindowedScreen benutzt wird erzeugt WindowEvent() ein Fehler im X-Server.
Würde mich über eine Bestätigung freuen Very Happy. Damit ich es als Bug melden kann oder halt nicht wenn es nur bei mir auftaucht.
Dass es crasht, kann ich mir vorstellen, aber ein Bug ist es nicht.
Zu dem Thema "WindowedScreen unter Linux" gibt es im englischen Forum genug Themen.
Da die vielen, vielen Frameworks und Libs unter Linux unabhängig von einander entwickelt werden, ist es oft einfach nicht möglich, die unter einen Hut zu bringen.