Seite 1 von 1
Fensterwerte falsch?
Verfasst: 01.10.2017 16:29
von wie_jetzt?
Hallo Leute,
folgender Code
Code: Alles auswählen
If OpenWindow(0, 0, 0, 500, 500, "Testfenster", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget)
Debug WindowX(0, #PB_Window_InnerCoordinate)
Debug WindowY(0, #PB_Window_InnerCoordinate)
Debug WindowX(0, #PB_Window_FrameCoordinate)
Debug WindowY(0, #PB_Window_FrameCoordinate)
Repeat
Ereignis.i = WaitWindowEvent()
Select Ereignis
Case #PB_Event_Menu
EndSelect
Until Ereignis = #PB_Event_CloseWindow Or Ende = #True
EndIf
zeigt im Debugfenster die Werte
an. Ich hätte aber eigentlich Werte so um die 500 erwartet. Wo ist mein Denkfehler?

Re: Fensterwerte falsch?
Verfasst: 01.10.2017 16:56
von Kiffi
wie groß ist denn die Auflösung Deines Monitors?
Grüße ... Peter
Re: Fensterwerte falsch?
Verfasst: 01.10.2017 17:19
von udg
naja deine Debug Ausgabe zeigt dir nicht die Breite und Höhe eines Fensters an sondern nur die Startpunkte x und y
am besten kannst du das erkennen wenn du diese Konstante mal rausnimmst:
dann zeigt es dir im Debug folgendes an:
WindowX(#main, #PB_Window_InnerCoordinate)
3 - (das innere Fenster welches 500 pix breit ist fängt ab Pixel
4 an)
WindowY(#main, #PB_Window_InnerCoordinate)
30 - (das innere Fenster welches 500 pix hoch ist fängt ab Pixel
31 an)
WindowX(#main, #PB_Window_FrameCoordinate) =
0
WindowY(#main, #PB_Window_FrameCoordinate) =
0
passt also
Lösung:
Code: Alles auswählen
Enumeration
#Main
EndEnumeration
#MainWidth = 500
#MainHeight = 500
If OpenWindow(#Main, 0, 0, #MainWidth, #MainHeight, "Testfenster", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget)
Debug WindowX(#Main, #PB_Window_InnerCoordinate) + #MainWidth ; Startpos Fenster X + FensterBreite
Debug WindowY(#Main, #PB_Window_InnerCoordinate) + #MainHeight ; Startpos Fenster Y + FensterHöhe
Debug WindowX(#Main, #PB_Window_FrameCoordinate)
Debug WindowY(#Main, #PB_Window_FrameCoordinate)
Repeat
Ereignis.i = WaitWindowEvent()
Select Ereignis
Case #PB_Event_Menu
EndSelect
Until Ereignis = #PB_Event_CloseWindow Or Ende = #True
EndIf
Re: Fensterwerte falsch?
Verfasst: 01.10.2017 21:16
von wie_jetzt?
Hallo Kiffi und UDG!
Besten Dank Euch beiden! Vor allem an UDG für seine ausführliche Erklärung, die einem Spätberufenen wie mir das super klar erklärt hat. Ohne diese Erklärung hätte mir der Hinweis von Kiffi auch nicht weitergeholfen. Da war ich mal wieder voll auf dem Holzweg! Doch jetzt lichtet sich das Dunkel. Das fühlt man sich gut aufgehoben.
Besten Dank!
Re: Fensterwerte falsch?
Verfasst: 02.10.2017 01:07
von Imhotheb
Wie wäre es mit WindowHeigth() bzw. WindowWidth()? ... Oder hab ich da was falsch verstanden
Re: Fensterwerte falsch?
Verfasst: 02.10.2017 11:37
von udg
Imhotheb hat geschrieben:Wie wäre es mit WindowHeigth() bzw. WindowWidth()? ... Oder hab ich da was falsch verstanden
oder so

, wenn der Rahmen und Kopf nicht von Belangen ist
Code: Alles auswählen
Debug "FensterBreite: " + WindowWidth (#Main) ; FensterBreite
Debug "FensterHöhe: " + WindowHeight(#Main) ; FensterHöhe
Re: Fensterwerte falsch?
Verfasst: 25.10.2017 09:50
von juergenkulow
Code: Alles auswählen
; Zeige Breite, Höhe, Positionen und Ereignisse von Fenstern an.
; Windows 7 PureBasic 5.60 (Windows - x64)
EnableExplicit ; Hilft gegen Variablen die keinen Wert bei Abfragen haben und gegen Schreibfehler. Danach müssen Variablen mit Define erklärt werden.
Define Testfenster=OpenWindow(#PB_Any, 0, 0, 500, 500, "Testfenster", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget)
If Testfenster
Debug "FensterBreite:" + WindowWidth (TestFenster) ; FensterBreite
Debug "FensterHöhe: " + WindowHeight(TestFenster) ; FensterHöhe
Debug "X-Position: " + WindowX(TestFenster, #PB_Window_FrameCoordinate)
Debug "Y-Position: " + WindowY(TestFenster, #PB_Window_FrameCoordinate)
Debug "innere X-Posi:" + WindowX(TestFenster, #PB_Window_InnerCoordinate)
Debug "innere Y-Posi:" + WindowY(TestFenster, #PB_Window_InnerCoordinate)
Define Menue = CreateMenu(#PB_Any,WindowID(Testfenster)) ; Erstelle Menü, damit bei #PB_Event_Menu etwas abgefragt werden kann.
If Menue
MenuTitle("Menü")
MenuItem(4711, "Programm beenden")
MenuItem(4712, "weiter")
Else
Debug "Menü konnte nicht erstellt werden. "
EndIf
If 0=StartDrawing(WindowOutput(Testfenster)) ; Öffnet Fenster zum beschreiben oder zeichnen. StopDrawing() ist vor erneutem StartDrawing notwendig.
Debug "StartDrawing fehlgeschlagen."
EndIf
Define Ende=#False
Repeat
Define Ereignis.i = WaitWindowEvent() ;Wartet bis ein Ereignis auftritt.
Debug "Ereignis: $" + Hex(Ereignis,#PB_Long) ; Das Fensterereignis wird ausgeben.
Select Ereignis
Case #PB_Event_CloseWindow ;$333C Fenster soll geschlossen werden
Ende = #True
Case #PB_Event_MoveWindow ; $333D Fenster wurde verschoben
Debug "FensterBreite:" + WindowWidth (TestFenster) ; FensterBreite
Debug "FensterHöhe: " + WindowHeight(TestFenster) ; FensterHöhe
Debug "X-Position: " + WindowX(TestFenster, #PB_Window_FrameCoordinate)
Debug "Y-Position: " + WindowY(TestFenster, #PB_Window_FrameCoordinate)
Debug "innere X-Posi:" + WindowX(TestFenster, #PB_Window_InnerCoordinate)
Debug "innere Y-Posi:" + WindowY(TestFenster, #PB_Window_InnerCoordinate)
Case #PB_Event_Menu ;$332D
DrawText(10,50,"Event_Menu wurde aufgerufen. "+Str(EventMenu()))
Select EventMenu() ; Welches Menü oder welche Taste wurde gedrückt.
Case 4711 ; Menü Programm beenden wurde aufgerufen.
Ende=#True
Case 4712 ; Menü weiter wurde aufgerufen
DrawText(100,10,"weiter")
Default
DrawText(100,10,"Unbekanntes Menü wurde aufgerufen.")
EndSelect
Default
DrawText(50,10,"Ereignis: $"+Hex(Ereignis,#PB_Long)+" wurde nicht abgefragt. ") ; Schreibt das Ergebnis weiß auf schwarz. Vergleiche mit Debug Ereignis.
EndSelect
Until Ende = #True
StopDrawing() ; Aufräumen - Gegenstück zu StartDrawing
FreeMenu(Menue) ; Gegenstück zu CreateMenu
CloseWindow(Testfenster) ; Gegenstück zu OpenWindow
Else
Debug "Testfenster konnte nicht geöffnet werden. "
EndIf