2010-01-04 17 views
5

[Domanda]Come individuare la finestra è stata ridimensionata per Windows7

. Come rilevare la finestra (WPF) è stato ridimensionato da Aero Snap? quindi posso ignorare la nuova dimensione e posizione.

Grazie per la risposta e i commenti in anticipo.

+0

Potrebbe essere utile sapere cosa stai cercando di ottenere qui perché sospetto che la risposta sarà: non puoi dirlo. Ma potrebbe esserci un altro modo per risolvere il tuo problema. – Richard

+0

Vuoi sapere quando la finestra viene ridimensionata? O in particolare da Aero Snap? Se specificamente Aero Snap, perché? Come dice Richard, potrebbe esserci un altro modo di aiutare se conosciamo il vero problema. –

+0

Grazie per i vostri suggerimenti, ho bisogno di salvare la posizione e la dimensione prima che Aero si scatti. – whunmr

risposta

4

All'uscita, Chiama GetWindowPlacement. Ciò restituirà la dimensione e la posizione della finestra corrente, e se si è ridotto a icona, ingrandito o ripristinato, fornirà anche l'ultima dimensione e posizione della finestra "ripristinata".

Quindi non devi tenere traccia delle modifiche alla posizione della finestra, basta chiedere quando ne hai bisogno.

typedef struct _WINDOWPLACEMENT { 
    UINT length; 
    UINT flags; 
    UINT showCmd; 
    POINT ptMinPosition; 
    POINT ptMaxPosition; 
    RECT rcNormalPosition; 
} WINDOWPLACEMENT; 
+0

Grazie per il vostro aiuto. – whunmr

+0

Perché usi una chiamata API Win con P/Invoke? Penso che sia meglio evitare questi e cercare una pura soluzione di libreria di classi .NET. –

+2

@Oliver: Niente di male con P/Invocazione. Tale funzionalità è fornita da .NET Framework per un motivo: in questo modo è possibile eseguire operazioni per le quali non fornisce già un'implementazione gestita. La risposta breve qui è che * non * è un'implementazione gestita che può farlo, quindi P/Invoking è la tua unica opzione. –

Problemi correlati