LabVIEWForum.de
Fenstergröße unter Win7 bestimmen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Fenstergröße unter Win7 bestimmen (/Thread-Fenstergroesse-unter-Win7-bestimmen)



Fenstergröße unter Win7 bestimmen - FEL - 04.05.2012 08:43

Hallo Leute,

ich arbeite an einer Anwendung, welche an einem PC mit 2 Monitoren betrieben wird. Monitor 1 zeigt das Hauptprogramm und auf Monitor 2 sind zwei Fenster zur Datenanzeige (Aufruf der VIs vom Hauptprogramm) zu sehen. Die beiden Datenfenster sollen bündig nebeneinander angeordnet werden. Dazu wird das 1. Datenfenster in die linke obere Ecke des Monitors 2 plaziert. Dann wird die Frontpanel Property FP.WinBounds abgefragt, um den rechten Rand des Fensters zu bestimmen. Diese Position entspricht dann dem linken Rand des 2. Datenfensters.

Damit lassen sich die Fenster nebeneinander anordnen, zumindest unter XP. Unter Win7 klappt dies leider nicht, dann standardmäßig ist bei Win7 ein Rand aus 4 Pixeln um jedes Fenster. Dieser Rand wird aber bei der Property FP.WinBounds leider nicht berücksichtigt. Egal wie groß der Rand eingestellt ist, die Ergebnisse von FP.WinBounds sind gleich.

Gibt es vielleicht eine andere Property, welche die wahre Größe eines Fensters bestimmt? Oder kann man die Größe des Randes ermitteln? Ist sicher in den Weiten der Registry versteckt.

Die Anwendung ist unter LV2010 64 Bit programmiert.

Gruß Micha


RE: Fenstergröße unter Win7 bestimmen - THL - 04.05.2012 14:16

Das Problem kann ich irgendwie nicht nachvollziehen. Mir liefert FP.WinBounds (Front Panel Window:Window Bounds) exakt die Aussenabmessungen des Fensters inklusive Rahmen - sowohl im Aero-Design mit deutlich dickerem Rand als 4 Pixeln als auch im klassisch-Design mit den erwähnten 4 Pixeln.
Sicher dass du FP.WinBounds und nicht versehentlich FP.PanelBounds genommen hast?


RE: Fenstergröße unter Win7 bestimmen - FEL - 04.05.2012 14:39

Da bin ich mir sicher, da ich beide Eigenschaften abfrage.

Ergebnis bei Rand 0 Pixel
[attachment=39708]

Ergebnis bei Rand 10 Pixel
[attachment=39709]

Gruß Micha


RE: Fenstergröße unter Win7 bestimmen - THL - 04.05.2012 15:43

Dumme Frage: Was für ein Windows Layout benutzt du da und wo änderst du die Rahmenbreite?
Nach Windows klassisch sieht das nicht aus, da das grau und Pseudo-3D ist.
Ebensowenig ist das ein Aero Design oder Windows 7 Basis (die sind allesamt deutlich breiter als 4 Pixel).
Dieses
Zitat:standardmäßig ist bei Win7 ein Rand aus 4 Pixeln um jedes Fenster
irritiert mich doch ein wenig...

Spasseshalber habe ich mal mit Windows 7 Basis rumgespielt und dabei korrekte Werte erhalten (siehe angehängtes Bild).
Obere Reihe: 'Rahmen des aktiven Fensters' -> 'Wert' auf 1 gestellt (0 geht da gar nicht)
Untere Reihe Das gleich mit einem Wert von 10, also auf jeder Seite +9, d.h. in der Breite und Höhe jeweils +18.
Das passt wunderbar zu den Werten, die mir der property node ausspuckt...


RE: Fenstergröße unter Win7 bestimmen - FEL - 07.05.2012 08:13

Hi THL,

danke für Deine Tests. Ich habe mich vielleicht etwas unglücklich ausgedrückt. Sorry. Probleme macht nicht die Rahmenbreite sondern die Rahmenfüllung.

(04.05.2012 15:43 )THL schrieb:  Dumme Frage: Was für ein Windows Layout benutzt du da und wo änderst du die Rahmenbreite?
Nach Windows klassisch sieht das nicht aus, da das grau und Pseudo-3D ist.
Ebensowenig ist das ein Aero Design oder Windows 7 Basis (die sind allesamt deutlich breiter als 4 Pixel).

Auswahl Layout:
Desptop -> rechte Maustaste -> "Anpassen" -> Aero-Designs "Windows 7" auswählen

Rahmenfüllung einstellen:
gleiches Menü wie oben
im unteren Bereich Menüpunkt "Fensterfarbe" auswählen
"Erweiterte Darstellungseinstellungen..." wählen
Element "Rahmenfüllung" wählen -> bei Größe kann die Breite in Pixel eingestellt werden (Standard 4)

Ob Aero Peek ein- oder ausgeschaltet ist, hat keinen Einfluß auf das Problem.
Aero Peek einstellen
Systemsteuerung -> "Erweiterte Systemeinstellungen anzeigen" -> Tab "Erweitert" -> Rahmen "Leistung" Button "Einstellungen..." -> Tab "Visuelle Effekte"

Gruß Micha


RE: Fenstergröße unter Win7 bestimmen - THL - 07.05.2012 09:10

Ich habe es eben mit 'Rahmenfüllung' an meinem Aero-Design ausprobiert.
Das Ergebnis ist im angehängten Bild zu sehen (oben 4 Pixel, unten 10 Pixel).
Da es beim Umstellen Darstellungsartefakte gab, habe ich die Labview-Fenster kurz minimiert und wiederhergestellt,
ansonsten - ausser RUN-Knopf zu drücken - nichts weiter dran gemacht.
Auch hier scheint das Ergebnis schlüssig zu sein, d.h. ich kann dein Problem leider noch immer nicht reproduzieren...


RE: Fenstergröße unter Win7 bestimmen - FEL - 07.05.2012 13:25

Ich habe mir wie Du ein einfaches Beispiel gebastelt und siehe da, die Window Bounds Funktion macht was sie soll. Dann habe ich mit den VI EIgenschaften herumprobiert und die Ursache gefunden. Es liegt an der Eigenschaft "Allow user to resize window" (Eigenschaften VI -> Window Appearance -> Button "Customize..." -> Checkbox "Allow user to resize window").

Wenn Resize deaktiviert ist, liefert Window Bounds die Fensterwerte ohne Rahmenfüllung. Zumindest bei mir.

D.h. ich muß Resize erlauben, das Resize-Ereignis überwachen und bei Änderung der Fenstergröße diese wieder auf den Orginalwert setzen.

Gruß Micha