Ergebnis = OpenWindow(...) ?

Anfängerfragen zum Programmieren mit PureBasic.
Salafat
Beiträge: 30
Registriert: 05.01.2012 07:40
Computerausstattung: AMD FX-8350 Eight-Core-Prozessor 4,00 GHz
8 GB RAM
Windows 7 64-Bit
Wohnort: Berlin

Ergebnis = OpenWindow(...) ?

Beitrag von Salafat »

Hallo,

Ich habe hier mal eine Anfängerfrage hoch drei, ich bitte mir das nachzusehen (komme von PowerBasic).

In der Referenz zum OpenWindow-Befehl wird folgende Syntax angegeben:

Code: Alles auswählen

Ergebnis = OpenWindow(#Window, x, y, InnereBreite, InnereHoehe, Titel$ [, Flags [, ParentWindowID]])
Wieso wird hier der OpenWindow-Befehl einem Ergebnis zugeordnet? Was genau ist hier mit Ergebnis gemeint (steht in der Hilfe, die normalerweise jeden Parameter erklärt, nicht drin). Ist diese Zuordnung obligatorisch, oder kann man auch einfach

Code: Alles auswählen

OpenWindow(#Window, x, y, InnereBreite, InnereHoehe, Titel$ [, Flags [, ParentWindowID]])
schreiben? Falls ja, was ist der Unterschied zwischen der Variante mit "Ergebnis =" und ohne?

Außerdem werden im Buch von Gary Willoughby der OpenConsole- und OpenWindow-Befehl sehr häufig mit einer If-Abfrage verbunden, z.B.

Code: Alles auswählen

If OpenWindow(#FENSTER_HAUPT, 0, 0, 300, 200, "Hallo Welt", #FLAGS)
  Repeat
    Ereignis.i = WaitWindowEvent()
  Until Ereignis = #PB_Event_CloseWindow
EndIf
wo ich gleich dreimal nicht verstehe, was das soll. Wieso kann man das Fenster nicht einfach über CloseWindow schließen, falls #PB_Event_CloseWindow erfüllt ist, wieso muß man das in eine If-Struktur packen?

Vielen Dank
PureBasic v5.11 x64
Windows 7 64-Bit
AMD FX-8350 Eight-Core Processor 4 GHz, 8 GB Arbeitsspeicher
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Ergebnis = OpenWindow(...) ?

Beitrag von NicTheQuick »

'OpenWindow()' gibt als Ergebnis einen Wert ungleich Null zurück, wenn das Fenster erfolgreich geöffnet werden konnte. Trat irgendwo ein Fehler auf, wird Null zurück gegeben. Daher wird hier das 'If' verwendet. Wenn du außerdem als ID die Konstante '#PB_Any' verwendest, musst du den Rückgabewert zwischenspeichern, da dies dann die ID ist, mit der du weitere Aktionen auf dem Fenster ausführen kannst wie z.B. 'ResizeWindow()' oder 'CloseWindow()'.

Steht das wirklich nicht in der Hilfe? Ich hab grad nicht nachgeschaut.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Ergebnis = OpenWindow(...) ?

Beitrag von RSBasic »

Du kannst auch ohne "Ergebnis = " schreiben, aber mit Ergebnis kannst du überprüfen, ob die Erstellung deines Fensters erfolgreich war.
Mal angenommen, es gäbe einen Fehler, dann wird 0 zurückgegeben und du kannst das abfangen. Weil sonst die nachfolgenden Gadgets wie "ButtonGadget()" nicht erstellt werden können, weil das Fenster ja nicht vorhanden ist.
Mit If ist es genauso. Damit kannst du überprüfen, ob die Erstellung deines Fensters wahr (!=0) ist. Wenn die Fenstererstellung fehlerhaft war, dann soll er alles, was sich in der If-Abfrage (im Wahr-Bereich) befindet, nicht ausführen.
Wenn du im ersten Parameter "#PB_Any" nutzt, dann wird außerdem die zufällige Fensternummer zurückgegeben.

@NicTheQuick
Doch, das steht alles in der Hilfe.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten