none
Windows Forms: Unter Win 7 das Repositionieren beim Maximieren des Fensters verhindern

    Frage

  • Hallo,

     

    mit Windows 7 ist es möglich mit der Tastenkombination "Win + Up Arrow" das aktuell aktive Fenster zu maximieren. Leider wird nicht wie von mir erwartet eine ensprechende Message in die Message Queue (SC_MAXIMIZE) gestellt, sondern das ganze passiert in Form einer Abfolge verschiedener Nachrichten.

     

    Mein Anwendungsfenster besitzt eine relativ feste Größe, d.h. die Größe des Fensters richtet sich am Inhalt aus. Das Maximieren des Fensters über obige Nachricht lässt sich ja noch verhältnismäßig leicht unterbinden, zum einen da ich überhaupt keine Control Box anzeige, zum anderen wird die entsprechende Nachricht einfach nach SC_RESTORE umgebogen. Zur zusätzlichen Sicherheit entspricht die Maximum Size immer der aktuellen Größe nach einer Neuberechnung der notwendigen Fenstergröße.

    Bei Verwendung von "Win + Up Arrow" passieren allerdings mehrere Dinge auf einmal. Zum einen das Maximieren des Fensters (durch direktes Ändern der Fenstergröße (WM_SIZE), zum anderen wird aber auch die Position des Fensters an den Ursprung (0,0) gesetzt. Folglich wird durch Ausführen der Tastenkombination mein Fenster nun an den Ursprung gesendet. Das würde ich aber gerne verhindern.

     

    Ich hatte zunächst überlegt einfach im KeysUp Event die entsprechnde Folge abzufangen, jedoch scheint mir das eine ungenügende Lösung zu sein, da die Folge ja irgendwann und nicht zwingend direkt hintereinander kommen könnte.

     

    Kennt jemand andere Ansätze? Jede Hilfe ist willkommen!

     

    Beste Grüße,

    Michael



    Donnerstag, 9. Juni 2011 09:30

Antworten

  • Hallo,

     

    habe es inzwischen selber herausgefunden. Man muss einfach Form.MaximizedBounds auf die gewünschten Werte setzen.

     

    Beste Grüße,

    Michael

    Freitag, 10. Juni 2011 09:13