tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
342
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    RedWraith RedWraith ist offline Mitglied Silber
    Registriert seit
    Aug 2007
    Beiträge
    61
    Hallo !

    Ich möchte folgendes erreichen. Gibt es eine Möglichkeit, bei einem maximierten Fenster die Originalgröße und -position, also die im nicht-maximierten Zustand abzufragen ?

    Ein Beispiel:
    Auf meinem Monitor mit der Auflösung 1280x1024 habe ich ein .net Programm laufen, dessen Größe und Position folgendermaßen ausschaut:
    Code :
    1
    2
    3
    4
    
    .top=100
    .left=100
    .width=800
    .height=640

    Maximiere ich das Fenster jetzt ändern sich diese Daten auf folgendes ab:
    Code :
    1
    2
    3
    4
    
    .top=-8
    .left=-8
    .width=1296
    .height=1010

    Wenn ich das Fenster jetzt wieder de-minimisiere (geiles Wort ), kehrt das Fenster wieder zu dem Zustand vor der Maximierung zurück. Das heißt, irgendwo muss das Fenster diese Werte aufbewahren.

    Kann mir jemand sagen, wie ich bei einem maximierten Fenster diese Werte in Erfahrung bringen kann, bevor das Programm wieder normalisiert wird ?

    Ich hätte Interesse an einem Weg innerhalb der .NET Klassenstruktur und einen über das Windows Nachrichtensystem (WM_GETSIZE oder so).
     

  2. #2
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.002
    Habe mal kurz im Internet gesucht, aber leider nichts gefunden.
    Am einfachsten ist es natürlich sich eigene Variablen dafür anzulegen, in denen du im SizeChanged-Event die neue Größe speicherst, wenn der Fenster-Zustand nicht maximiert und nicht minimiert ist.
    Warum willst du diese Werte überhaupt wissen?
     

  3. #3
    RedWraith RedWraith ist offline Mitglied Silber
    Registriert seit
    Aug 2007
    Beiträge
    61
    Ich muss aus einem Programm heraus ein anderes Programm schließen und anschließend wiederherstellen um eine Ressource, die sonst von eben diesem Programm blockiert wird kurzzeitig frei zu bekommen.

    Wenn das Programm vor dem Schließen maximiert war, geschlossen und wieder geöffnet wird und man es dann wieder de-maximiert, dann bleibt das Fenster so groß wie der gesamte Bildschirm.

    Ich werd einfach die Fenstergröße auf ein Viertel des Bildschirms oder so setzen. Es war jetzt keine kritische Sache, es war halt etwas, was mich ein wenig gewurmt hat
     

  4. #4
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.425
    Zitat Zitat von RedWraith Beitrag anzeigen
    Ich muss aus einem Programm heraus ein anderes Programm schließen und anschließend wiederherstellen
    Kannst du nicht vor dem Schließen ermitteln ob maxmiert oder nicht und wenn nicht die Position und Größe holen? Dann hst du doch alle Informationen, um das Programm wieder entsprechend herzustellen.

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  5. #5
    RedWraith RedWraith ist offline Mitglied Silber
    Registriert seit
    Aug 2007
    Beiträge
    61
    Nicht so ohne weiteres. Ich wollte folgendes Verhalten unterbinden:

    Programm vor dem Schließen/Wiederherstellen:
    Das Programm ist maximiert und hat als Fenstergröße 1280x1024. Würde ich das Fenster nun normalisieren, dann würde sich die Fenstergröße auf z. bsp. 640x480 verringern.

    Jetzt schließe ich das Programm und stelle es wieder her:
    Das Programm ist maximiert und hat als Fenstergröße 1280x1024. Würde ich das Fenster nun normalisieren, dann würde die Fenstergröße auf 1280x1024 bleiben, weil die Größe-wenn-nicht-maximiert beim Schließen und Wiederherstellen verloren geht (Weil ich sie nicht auslesen kann).
     

  6. #6
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.425
    Ah, jetzt verstehe ich; habe vorher nicht gründlich genug gelesen.

    Vielleicht wäre es möglich, das andere Programm (wenn maximiert) vor dem Schließen erst zu normalisieren und davaon die Größe abzugreifen. Beim Wiederherstellen wird es erst normalisiert angezeigt und bei Bedarf danach
    maximiert.

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  7. #7
    freakbrother freakbrother ist offline Mitglied Bronze
    Registriert seit
    May 2007
    Ort
    Ostmanien
    Beiträge
    33
    Du weist der Size einen neuen Wert zu, der als Ausgangswert für FormWindowState.Normal gilt.
    Ist dieser nun gleich groß wie FormWindowState.Maximized tja.. dann wird sich nix ändern.
    Denn die FormWindowState.Normal ist bei öffnen eines WinForm-Programms jene Größe die du als *ausgangswert* definiert hast (meist in der Entwicklungsumgebung )
    Das heisst deine FormWindowsState.Normal = definierter ausgangswert.
    Das heisst auch wenn du dein Programm schließt und wieder öffnest ist der ausgangswert wieder als FormWindowsState.Normal definiert. Vorrausgesetzt du überschreibst ihn vor dem neuerlichen *öffnen* nicht.
    Am einfachsten wäre es du speicherst den FormWindowsState beim schließen des Programms (z.b: in einer Xml - Datei) und beim öffnen liest du diesen wieder aus und weist es dem Programm zu.
    Du könntest auch den FormWindowState und die Size abspeichern. Mehr als miximieren und minimieren geht eh nicht also bräuchtest du nur dann die Size zuordnen wenn dein Programm FormWindowsState.Normal aufweist und die Size in diesem Status vom Benutzer geändert worden wäre. (dann ändert sich nämlich auch die Ausgangsgröße..) Wenn er natürlich die Size jetzt so weit auseinanderzieht das sie gleich der FormWindowState.Maximum Size wäre is es natürlich ähm blöd .

    Das ganze könntest du im SizeChanged Event behandeln und bei OnClosing speichern

    Ich hoffe ich hab das einigermaßen verständlich formuliert
     
    Ich bin ein Kind ein deppertes, in meinem Hirn da scheppert es...

Ähnliche Themen

  1. Popup-Fenster Position
    Von angelikamorgan im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 26.06.08, 12:49
  2. Windows Xp +fenster position merken
    Von Jan-Frederik Stieler im Forum Microsoft Windows
    Antworten: 2
    Letzter Beitrag: 03.01.06, 20:48
  3. java programm mit maximiertem fenster starten
    Von mts im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 19.04.05, 14:25
  4. Fenster an bestimmter Position öffnen
    Von forsterm im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 23.02.05, 14:51
  5. Maus-Position im Fenster abfragen
    Von madball im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 27.02.04, 13:26