OpenWindowedScreen öffnet neues Fenster unter Linux [2]

Fragen und Bugreports zur PureBasic 4.0-Beta.
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

OpenWindowedScreen öffnet neues Fenster unter Linux [2]

Beitrag 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
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag 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"?
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag 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
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Früher brauchte man vielleicht mal InitScreen, aber probier einfach mal aus was passiert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

das isn platzhalter, davon gibts noch mehrere...

bitte einfach ignorieren.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag 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
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag 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.
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag von tmjuk »

@Kaeru Gaman

Entschuldigung. Stimmt, hatte wenig Geduld. Werde mich bessern

Torsten
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
Gesperrt