Seite 1 von 2

OpenWindowedScreen öffnet neues Fenster unter Linux [2]

Verfasst: 28.01.2007 14:56
von tmjuk
Hallo,

ich hatte dies schon unter PureBasic 4.0 Beta gepostet. Bekam aber keine Antwort. Darum versuche ich es hier nochmal. Es gibt da ein Problem unter Linux Suse10.2. Ich möchte auf einem Fenster einen Screen erstellen.
Hatte einen komischen Fehler. Also habe ich das Original-Beispiel aus der Hilfe verwendet um eventuelle Fehlerquellen meinerseits heraus zu finden. Der Fehler war dann aber derselbe.
Hier der original Hilfe-Code:

Code: Alles auswählen

If InitSprite() = 0 
    MessageRequester("Error", "Can't open screen & sprite enviroment!", 0)
    End
  EndIf
 
  If OpenWindow(0, 0, 0, 220, 160, "A screen in a window...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(0))
      ButtonGadget(0, 170, 135, 45, 20, "Quit")
    EndIf
    If OpenWindowedScreen(WindowID(0), 0, 0, 160, 160, 0, 0, 0)
      CreateSprite(0, 20, 20)
      If StartDrawing(SpriteOutput(0))
        Box(0, 0, 20, 20, RGB(255, 0, 155))
        Box(5, 5, 10, 10, RGB(155, 0, 255))
        StopDrawing()
      EndIf
    Else
      MessageRequester("Error", "Can't open windowed screen!", 0)
      End
    EndIf
  EndIf
 
  direction = 2
  Repeat
    ; Es ist sehr wichtig, alle im Queue befindlichen Ereignisse während jedes Frames abzuarbeiten
    ;
    Repeat
      Event = WindowEvent()
     
      Select Event
        Case #PB_Event_Gadget
          If EventGadget() = 0
            End
          EndIf
       
        Case #PB_Event_CloseWindow
          End
      EndSelect
    Until Event = 0
 
    FlipBuffers()
    ClearScreen(RGB(0, 0, 0))
    DisplaySprite(0, x, x)
    x + direction
    If x > 140 : direction = -2 : EndIf
    If x < 0   : direction =  2 : EndIf
    Delay(1)
  ForEver
OpenWindowedScreen erstellt hier bei mir ein 2. Fenster mit einer Titelleiste, allerdings ohne Titel. Das 2. Fenster ist neben dem "Hauptfenster" oder oben links in der Ecke. Kommt darauf an, wie das "Hauptfenster" plaziert ist.
Kennt ihr dieses Verhalten?
Wirkt ein wenig merkwürdig, vor allen Dingen, weil ich nicht weiß, wie man das beseitigt. Oder sollte es doch ein Bug sein??

Vielen Dank für eure Hilfe im Voraus

Torsten

Verfasst: 28.01.2007 15:08
von DarkDragon
Jo, das ist standard. Mit SDL kann man ja nichtmehr festlegen welches Fenster den Screen haben soll, man kann nur ein neues erstellen, desshalb wird es für Fred unmachbar sein, außer er nutzt nichtmehr SDL.

Verfasst: 28.01.2007 17:26
von tmjuk
Das klingt interessant. Seltsam ist, wenn ich z.B. eine Linie zeichne, diese dann auf dem Hauptfenster zu sehen ist und nicht auf dem Screen-Fenster.
Ist das auch "normal"?

Verfasst: 28.01.2007 17:44
von DarkDragon
tmjuk hat geschrieben:Das klingt interessant. Seltsam ist, wenn ich z.B. eine Linie zeichne, diese dann auf dem Hauptfenster zu sehen ist und nicht auf dem Screen-Fenster.
Ist das auch "normal"?
Bei WindowOutput wäre es normal, aber bei ScreenOutput nicht.

Verfasst: 28.01.2007 17:52
von tmjuk
@DarkDragon
Ja, nun auch gsehen.
Mein Fehler :oops:

Aber noch eine Sache: Beim Autovervollständigen wird "InitScreen()" angezeigt. Die Funktion ist in der Hilfe nicht zu finden.
Hast du irgend eine Ahnung um die Bedeutung?

Torsten

Verfasst: 28.01.2007 17:56
von DarkDragon
Früher brauchte man vielleicht mal InitScreen, aber probier einfach mal aus was passiert.

Verfasst: 28.01.2007 18:02
von Kaeru Gaman
das isn platzhalter, davon gibts noch mehrere...

bitte einfach ignorieren.

Verfasst: 28.01.2007 18:20
von tmjuk
Aha...

Ja erstmal danke an alle. Waren bestimmt nicht die letzten Fragen. Wenn man bis jetzt unter Windows geschrieben hat und dann mit Linux anfängt, ergibt sich schon mal das eine oder andere Problemchen :wink:

Bis bald
Torsten

Verfasst: 30.01.2007 20:28
von vonTurnundTaxis
*repost*
Da kann man nichts machen. SDL unterstützt das nicht.
Man kann entweder OpenGL nehmen (damit geht es AFAIR) oder das Ursprungs-Fenster verstecken.

Verfasst: 30.01.2007 21:58
von tmjuk
@Kaeru Gaman

Entschuldigung. Stimmt, hatte wenig Geduld. Werde mich bessern

Torsten