WindowCentered überschreibt ScreenCentered?

Für allgemeine Fragen zur Programmierung mit PureBasic.
s91
Beiträge: 20
Registriert: 07.09.2022 17:20
Wohnort: HY

WindowCentered überschreibt ScreenCentered?

Beitrag von s91 »

Hi

Ich war mir eben sicher, dass früher mal der #pb_window_screenCentered flag den #pb_window_windowCentered flag überschrieb. Das unten stehende Programm würde dann das Fenster im Bildschirm mittig zentrieren.

Code: Alles auswählen

openWindow  (  1, 
               0, 
               0, 
               480, 
               240, 
               "center", 
               #pb_window_screenCentered  |  #pb_window_windowCentered  )

messageRequester  (  "#pb_window_screenCentered  |  #pb_window_windowCentered", 
                     "This window is not placed in the center of the screen.")

repeat
until waitWindowEvent () = #pb_event_closeWindow
Warum ist das (jetzt) eigentlich nicht (mehr) so?
Benutzeravatar
mk-soft
Beiträge: 3701
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: WindowCentered überschreibt ScreenCentered?

Beitrag von mk-soft »

Wurde wohl geändert. Aber für #pb_window_windowCentered muss man ein Parent Window angeben

Code: Alles auswählen

OpenWindow(0, 100, 100, 600, 400, "Test", #PB_Window_SystemMenu)
OpenWindow(1, 0, 0, 480, 240, "center", #PB_Window_WindowCentered, WindowID(0))

Repeat
Until WaitWindowEvent () = #PB_Event_CloseWindow
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
HeX0R
Beiträge: 2959
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: WindowCentered überschreibt ScreenCentered?

Beitrag von HeX0R »

Mit 5.71 ging es zumindest noch, aber warum / weshalb das nun anders ist, weiß ich nicht, aber stört eigentlich auch nicht.
(Man kann es übrigens mit der Code Formatierung auch übertreiben :freak: )
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: WindowCentered überschreibt ScreenCentered?

Beitrag von Nino »

Wenn ich ein zentriertes Fenster erzeugen will muss ich mich entscheiden, in Bezug worauf es zentriert werden soll: in Bezug auf den Bildschirm oder in Bezug auf ein anderes Fenster (das natürlich spezifiziert werden muss, wie hier schon geschrieben wurde). Daher verstehe ich nicht welcher Sinn darin liegen sollte, beim Befehl OpenWindow() die Flags #PB_Window_ScreenCentered und #PB_Window_WindowCentered beide gleichzeitig anzugeben.
Frohe Weihnachten!
s91
Beiträge: 20
Registriert: 07.09.2022 17:20
Wohnort: HY

Re: WindowCentered überschreibt ScreenCentered?

Beitrag von s91 »

HeX0R hat geschrieben: 24.12.2022 14:05 Mit 5.71 ging es zumindest noch...
Danke! Ja, in 5.71 würde desktopCentered grundsätzlich alles überschreiben. Damit wäre Ninos Sichtweise implementiert.

Für den Fall, dass ich ein Fenster wahlweise ohne oder mit parent zentrieren möchte, liese sich dieser code beschreiben:

Code: Alles auswählen

procedure doWindow (*dynamicParent = #null)
	
	openWindow  ( #pb_any, 
	              0, 
	              0, 
	              160, 
	              100, 
	              "center", 
	              #pb_window_screenCentered | #pb_window_windowCentered, 
	              *dynamicParent )
	
endProcedure

*parent.integer = openWindow ( #pb_any, 
                               0, 
                               0, 
                               400, 
                               250, 
                               "Hauptanwendung", 
                               #pb_window_systemMenu )

doWindow (*parent\i)
doWindow ()

repeat
until waitWindowEvent () = #pb_event_closeWindow
Allerdings greift windowCentered hier nicht richtig, sondern hebelt nur screenCentered aus... ein Bug
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: WindowCentered überschreibt ScreenCentered?

Beitrag von Nino »

s91 hat geschrieben: 27.12.2022 17:51 Danke! Ja, in 5.71 würde desktopCentered grundsätzlich alles überschreiben. Damit wäre Ninos Sichtweise implementiert.
Nicht wirklich. Meine Sichtweise ist – wie gesagt – dass man sinnvollerweise darauf verzichtet beide Flags gleichzeitig anzugeben, da sie sich gegenseitig ausschließen.
s91 hat geschrieben: 27.12.2022 17:51 Für den Fall, dass ich ein Fenster wahlweise ohne oder mit parent zentrieren möchte, liese sich dieser code beschreiben:

Code: Alles auswählen

procedure doWindow (*dynamicParent = #null)
	
	openWindow  ( #pb_any, 
	              0, 
	              0, 
	              160, 
	              100, 
	              "center", 
	              #pb_window_screenCentered | #pb_window_windowCentered, 
	              *dynamicParent )
	
endProcedure

*parent.integer = openWindow ( #pb_any, 
                               0, 
                               0, 
                               400, 
                               250, 
                               "Hauptanwendung", 
                               #pb_window_systemMenu )

doWindow (*parent\i)
doWindow ()

repeat
until waitWindowEvent () = #pb_event_closeWindow
Wirklich :?: Wo ist denn dokumentiert, dass das so funktionieren sollte, wie du es erwartest?

Für den Fall, dass ich ein Fenster wahlweise in Bezug auf den Bildschirm oder in Bezug auf ein Elternfenster zentrieren wollte, würde ich einfach eine entspr. Bedingung mit If verwenden.
s91
Beiträge: 20
Registriert: 07.09.2022 17:20
Wohnort: HY

Re: WindowCentered überschreibt ScreenCentered?

Beitrag von s91 »

Ich war mal so verrückt, das in die Bugs section zu posten, im Englischen. Wenn der Post von den Machern unbeachtet bleibt, hast du wohl recht :mrgreen:
Antworten