Probleme beim Fenster

Anfängerfragen zum Programmieren mit PureBasic.
felix16
Beiträge: 10
Registriert: 03.11.2009 15:32

Probleme beim Fenster

Beitrag von felix16 »

Hallo,
ich bin neu hier und habe ein Problem. Ich habe mit dem Visual Disigner ein Fenster erstellt, und wollte in diesem einen Screen offnen und das Spiel darin laufen lassen. Also habe ich die Daten in PureBasic eingefügt und versucht, die Befehle in das Spiel zu integrieren. Allerdings kam nur eine Fehlermeldung, die besagte, das die WindowID falsch ist. Ich habe mich durch das Tutorium von purebasic.com gearbeitet und ein Spiel daraus genommen, um herauszufinden, wie das funktioniert.

mfG Felix
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Probleme beim Fenster

Beitrag von Andesdaf »

Erstmal: Willkommen an Bord.

allerdings ist dein Problem ohne kurzen, lauffähigen Code, der dein Anliegen beschreibt,
nur schwer reproduzierbar. Könntest du also etwas code hierher posten?

Vom Problem her würde ich sagen du könntest mal ein WindowID() einbauen und es dann
noch einmal testen.
Win11 x64 | PB 6.20
walker
Beiträge: 278
Registriert: 29.08.2004 18:39
Wohnort: Bayern

Re: Probleme beim Fenster

Beitrag von walker »

Dazu braucht man keinen code..... felix16 hat doch genau beschrieben wa er getan hat... Ein fenster geöffnet um darin einen Screen zu erstellen... und eine Fehlermeldung erhalten! (und einen lauffähigen kann er nicht liefern da er Fehler bekommt :lol: )

Zu dem Problem:

Um einen WindowedScreen() (um diesen handelt es sich offensichtlich) in einem Fenster zu öffnen, musst du die Fenster-Nummer, die beim Erstellen des Window angegeben wird mit WindowID(Fensternummer) an den Befehl für den WindowedScreen übergeben.

Schau dir mal die Hilfe zu OpenWindowedScreen() an

Aber um mit den Worten von Andeasdaf abzuschliessen... Ein CodeSchnippsel der das Problem verdeutlicht ist IMMER eine gute Sache :allright: (mit lauffähig meint er einen Code, der alles incl. einer Eventschleife enthält)

PS: Willkommen im Board :)
felix16
Beiträge: 10
Registriert: 03.11.2009 15:32

Re: Probleme beim Fenster

Beitrag von felix16 »

Hallo,
danke für die Hilfe, über die WindowID meckert er nicht mehr.
Wenn ich allerdings versuche, zu starten, makiert PB mir den LoadSprite-Befehl. Die Fehlermeldung lautet:
There is no current Screen.

Ich habe den vom Visual Designer erstellten Code anstelle von OpenScreen eingesetzt, jetzt weiß ich nicht, wo und wie ich den Befehl für den Window-Screen setzen muss.

Hier der Code für das Fenster:

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 300, 100, 640, 480, "Spiel",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      
    EndIf
  EndIf
EndProcedure
Code-Tags ergänzt
Andesdaf
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Re: Probleme beim Fenster

Beitrag von jojo1541 »

Wilkommen im Board. :allright:

Code: Alles auswählen

Enumeration
#Window_0
EndEnumeration


Procedure Open_Window_0()
If OpenWindow(#Window_0, 300, 100, 640, 480, "Spiel", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar )
  OpenWindowedScreen(WindowId(#window_0),0,0,640,480,0,0,0)
  If CreateGadgetList(WindowID(#Window_0))
  
  EndIf
EndIf
EndProcedure
Du hast den Befehl, um den Screen zu öffnen vergessen. OpenWindowedScreen(WindowID,X,Y,Weite,Höhe,Autostretch,Rightoffset,Bottomoffset) öffnet einen Screen im Fenster. :wink:

Im übrigen würde ich den Visual-Designer meiden, da er sehr veraltet ist.

Ps: Bitte das nächste mal Code-tags verwenden, das erhöt die Übersichtlichkeit deutlich. <)
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
felix16
Beiträge: 10
Registriert: 03.11.2009 15:32

Re: Probleme beim Fenster

Beitrag von felix16 »

Hallo,
ich habe den Befehl extra weggelassen, ich möchte wissen, ob der Befehl in die Klammer der Procedure gehört oder hinter die Klammer, und was noch dazu gehört, der Befehl alleine funktioniert anscheinend nicht.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Re: Probleme beim Fenster

Beitrag von jojo1541 »

Der Befehl gehört auf jeden Fall in die Procedure, da befehle die außerhalb stehen, bei Procedureaufruf garnicht abgearbeitet werden.

Der Befehl alleine kann garnicht funktionieren, da er immer ein Fenster braucht, zu dem er gehört.

Hier mal ein kleines Beispiel:

Code: Alles auswählen

InitSprite()

Enumeration 
#window
EndEnumeration


OpenWindow(#window,100,100,200,200,"Test")
  OpenWindowedScreen(WindowID(#window),0,0,200,200,0,0,0)
;Bei Procedureaufruf hier Procedurenamen eingeben und openscreen und openwindowedscreen weglassen...  
  
Repeat

  ClearScreen(0)

  StartDrawing(ScreenOutput())
    Box(20,20,30,30,$2747D8)
  StopDrawing()

  FlipBuffers()
  
Until WaitWindowEvent() = #PB_Event_CloseWindow


;Mit Procedure:


;Procedure Openwindow()
;
;  OpenWindow(#window,100,100,200,200,"Test")
;    OpenWindowedScreen(WindowID(#window),0,0,200,200,0,0,0)
;
;endprocedure
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Probleme beim Fenster

Beitrag von Andesdaf »

der Befehl gehört in die Procedure hinein. :wink:
Win11 x64 | PB 6.20
Antworten