Seite 1 von 1

#PB_Window_InnerCoordinate

Verfasst: 03.05.2013 21:49
von Josh
Entweder ist WindowHeight mit der Konstante #PB_Window_InnerCoordinate vollkommen verbugt oder mir entzieht sich der tiefere Sinn.

Schaut euch mal das folgende Beispiel an. WindowY bring im Gegensatz zu WindowHeight logische Ergebnisse. Die in Klammer gesetzten Werte sind die Höhen, mit denen die Fenster geöffnet wurden.

Code: Alles auswählen

  Define msg.s

  OpenWindow (0, 200, 200, 200, 15, "Win 0")
  OpenWindow (1, 500, 200, 200, 15, "Win 1")
  OpenWindow (2, 200, 300, 200, 30, "Win 2")
  OpenWindow (3, 500, 300, 200, 30, "Win 3")
  OpenWindow (4, 200, 400, 200, 45, "Win 4")
  OpenWindow (5, 500, 400, 200, 45, "Win 5")

  CreateMenu(0, WindowID(0))
  MenuTitle("File")

  CreateMenu(2, WindowID(2))
  MenuTitle("File")

  CreateMenu(4, WindowID(4))
  MenuTitle("File")
  MenuTitle("File")
  MenuTitle("File")
  MenuTitle("File")
  MenuTitle("File")
  MenuTitle("File")
  MenuTitle("File")
  MenuTitle("File")
  MenuTitle("File")
  MenuTitle("File")
  MenuTitle("File")

  SetWindowTitle (0, "H=" + WindowHeight (0, #PB_Window_InnerCoordinate) + "(15)   Y=" + WindowY (0, #PB_Window_InnerCoordinate))
  SetWindowTitle (1, "H=" + WindowHeight (1, #PB_Window_InnerCoordinate) + "(15)   Y=" + WindowY (1, #PB_Window_InnerCoordinate))
  SetWindowTitle (2, "H=" + WindowHeight (2, #PB_Window_InnerCoordinate) + "(30)   Y=" + WindowY (2, #PB_Window_InnerCoordinate))
  SetWindowTitle (3, "H=" + WindowHeight (3, #PB_Window_InnerCoordinate) + "(30)   Y=" + WindowY (3, #PB_Window_InnerCoordinate))
  SetWindowTitle (4, "H=" + WindowHeight (4, #PB_Window_InnerCoordinate) + "(45)   Y=" + WindowY (4, #PB_Window_InnerCoordinate))
  SetWindowTitle (5, "H=" + WindowHeight (5, #PB_Window_InnerCoordinate) + "(45)   Y=" + WindowY (5, #PB_Window_InnerCoordinate))

  Repeat
  Until WaitWindowEvent () = #PB_Event_CloseWindow

Re: #PB_Window_InnerCoordinate

Verfasst: 03.05.2013 22:09
von NicTheQuick
Wieso? Das ist doch korrekt. Bei mir steht vor den Klammern das selbe wie in den Klammern. Eben die Fensterhöhe ohne Rahmen inklusive Menü, Standard eben, also das selbe wie ohne Flag und wie es schon immer war. Nutzt du allerdings '#PB_Window_FrameCoordinate' für 'WindowHeight()', dann kriegst du die Höhe inklusive Rahmen.

Getestet unter Linux.

Re: #PB_Window_InnerCoordinate

Verfasst: 03.05.2013 22:23
von Josh
Ups, hätte ich besser unter Windows posten sollen. Ich bekomme folgende Werte:

Fenstern mit Menü (falsch):
20(15)
30(30)
26(45)

Fenster ohne Menü (richtig):
15(15)
30(30)
45(45)

Die richtigen Ergebnisse mit Menü müssten sein:
0(15)
10(30)
6(45)

So sind die Werte unbrauchbar. Warum ich da jetzt 1x MenuHeight abziehen soll ergibt überhaupt keinen Sinn und ist gegenüber WindowY vollkommen inkonsequent. Werde wieder mal auf die API's zurückgreifen.

Re: #PB_Window_InnerCoordinate

Verfasst: 03.05.2013 22:50
von NicTheQuick
Bezüglich 'WindowY()' mit '#PB_Window_InnerCoordinate'. Das gibt bei mir mit oder ohne Menüzeile das selbe aus. Also obere linke Ecke des Clientbereichs.

Dass man 'MenuHeight()' abziehen muss, ist schon immer so und klar dokumentiert laut Hilfe. Dass es unter Windows nicht richtig funktioniert, ist dann allerdings ein Bug, da hast du Recht.

Lustig ist unter Linux aber auch, dass die Menüzeile nicht umbricht, wenn sie breiter wird als das Fenster. Ich glaube unter Windows ist das so, oder?

Re: #PB_Window_InnerCoordinate

Verfasst: 03.05.2013 23:04
von Josh
NicTheQuick hat geschrieben:Bezüglich 'WindowY()' mit '#PB_Window_InnerCoordinate'. Das gibt bei mir mit oder ohne Menüzeile das selbe aus. Also obere linke Ecke des Clientbereichs.
WindowY gibt unter OS Win den Wert unter der Menüzeile aus, berücksichtigt also im Gegensatz zu WindowHeight die Höhe des Menüs.
NicTheQuick hat geschrieben:Dass man 'MenuHeight()' abziehen muss, ist schon immer so und klar dokumentiert laut Hilfe. Dass es unter Windows nicht richtig funktioniert, ist dann allerdings ein Bug, da hast du Recht.
Ich finde da nichts dokumentiertes. In meiner Hilfe steht unter WindowHeight kein Wort davon.
NicTheQuick hat geschrieben:Lustig ist unter Linux aber auch, dass die Menüzeile nicht umbricht, wenn sie breiter wird als das Fenster. Ich glaube unter Windows ist das so, oder?
Windows bricht die Menüzeile um, also wird das Menü höher. Trotzdem muss ich den Wert MenuHeight abziehen. Lustigerweise hat MenuHeight dann überhaupt nichts mit der wirklichen Menühöhe zu tun.

---------------------------------------------

Schade ist nur, dass dieses komplett abwegige Verhalten nicht mit Einführung von #PB_Window_InnerCoordinate korrigiert wurde. Dies wäre eine einmalige Gelegenheit gewesen um gegen früheren Versionen noch kompatibel zu bleiben.

Re: #PB_Window_InnerCoordinate

Verfasst: 03.05.2013 23:12
von NicTheQuick
Josh hat geschrieben:
NicTheQuick hat geschrieben:Lustig ist unter Linux aber auch, dass die Menüzeile nicht umbricht, wenn sie breiter wird als das Fenster. Ich glaube unter Windows ist das so, oder?
Windows bricht die Menüzeile um, also wird das Menü höher. Trotzdem muss ich den Wert MenuHeight abziehen. Lustigerweise hat MenuHeight dann überhaupt nichts mit der wirklichen Menühöhe zu tun.
Achsoooo! :o

Das macht nun wirklich keinen Sinn. <)

Re: #PB_Window_InnerCoordinate

Verfasst: 03.05.2013 23:57
von Josh
NicTheQuick hat geschrieben:
Josh hat geschrieben:
NicTheQuick hat geschrieben:Lustig ist unter Linux aber auch, dass die Menüzeile nicht umbricht, wenn sie breiter wird als das Fenster. Ich glaube unter Windows ist das so, oder?
Windows bricht die Menüzeile um, also wird das Menü höher. Trotzdem muss ich den Wert MenuHeight abziehen. Lustigerweise hat MenuHeight dann überhaupt nichts mit der wirklichen Menühöhe zu tun.
Achsoooo! :o

Das macht nun wirklich keinen Sinn. <)
Das macht insofern einen Sinn, dass ich wenn ich den Wert MenuHeight abziehe, dann auf die richtige Fensterhöhe komme. Die Werte von WindowHeight sind einfach so hingedreht, dass ich nach Abzug der immer gleichen Menühöhe auf die richtige Fensterhöhe komme. Habe das auch erst später erkannt.

Trotzdem ist es vollkommen blödsinnig und inkonsequent, dass dann bei WindowY die Menühöhe bereits berücksichtigt ist.