Aktuelle Zeit: 23.07.2018 09:51

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Fensterwerte falsch?
BeitragVerfasst: 01.10.2017 16:29 
Offline
Benutzeravatar

Registriert: 28.08.2017 17:23
Hallo Leute,

folgender Code

Code:
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
Code:
710
301
707
270

an. Ich hätte aber eigentlich Werte so um die 500 erwartet. Wo ist mein Denkfehler? :o

_________________
Was das Programmieren angeht, bin ich ein Anfänger mit fast 40 Jahren Erfahrung, mit gelegentlichen, mitunter jahrzehntelangen Unterbrechungen. Kann mich noch dunkel an den TI58 bei der Bundeswehr Anfang der 1980er erinnern. Habe da mit "Mondlandung" viele Stunden der Heimatverteidung verbracht - Insider werden's kennen.
... wir hatten doch sonst nix!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fensterwerte falsch?
BeitragVerfasst: 01.10.2017 16:56 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
wie groß ist denn die Auflösung Deines Monitors?

Grüße ... Peter

_________________
einfach ist schwierig


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fensterwerte falsch?
BeitragVerfasst: 01.10.2017 17:19 
Offline
Benutzeravatar

Registriert: 20.06.2013 23:27
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:
Code:
#PB_Window_ScreenCentered


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:
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

_________________
PureBasic v5.30 + v5.44 LTS + v5.62 | Windows 7 x64 - Gforce GTX 950 - AMD FX6200 Six Core 3.80 | 26GB RAM


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fensterwerte falsch?
BeitragVerfasst: 01.10.2017 21:16 
Offline
Benutzeravatar

Registriert: 28.08.2017 17:23
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!

_________________
Was das Programmieren angeht, bin ich ein Anfänger mit fast 40 Jahren Erfahrung, mit gelegentlichen, mitunter jahrzehntelangen Unterbrechungen. Kann mich noch dunkel an den TI58 bei der Bundeswehr Anfang der 1980er erinnern. Habe da mit "Mondlandung" viele Stunden der Heimatverteidung verbracht - Insider werden's kennen.
... wir hatten doch sonst nix!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fensterwerte falsch?
BeitragVerfasst: 02.10.2017 01:07 
Offline
Benutzeravatar

Registriert: 10.10.2014 13:14
Wohnort: Wolfenbüttel
Wie wäre es mit WindowHeigth() bzw. WindowWidth()? ... Oder hab ich da was falsch verstanden

_________________
weil einfach einfach einfach ist ... mach' ich es anders


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fensterwerte falsch?
BeitragVerfasst: 02.10.2017 11:37 
Offline
Benutzeravatar

Registriert: 20.06.2013 23:27
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:
  Debug "FensterBreite: " + WindowWidth (#Main)  ;  FensterBreite
  Debug "FensterHöhe: " +  WindowHeight(#Main)   ;  FensterHöhe

_________________
PureBasic v5.30 + v5.44 LTS + v5.62 | Windows 7 x64 - Gforce GTX 950 - AMD FX6200 Six Core 3.80 | 26GB RAM


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fensterwerte falsch?
BeitragVerfasst: 25.10.2017 09:50 
Offline
Benutzeravatar

Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten
Code:
; 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

_________________
PB Spickzettel

Erkenntnisapparat einschalten entscheidet über das einzig bekannte Leben im sichtbaren Universum.
Bitte Frage fragen.
Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye