2010-01-04 16 views
5

[Pregunta]Cómo detectar ventana era cambiar el tamaño Windows7

. ¿Cómo detectar la ventana (WPF) fue redimensionada por Aero Snap? entonces puedo ignorar el nuevo tamaño y posición.

Gracias por su respuesta y sus comentarios con anticipación.

+0

Puede ser útil saber lo que está tratando de lograr aquí porque sospecho que la respuesta será: no se puede decir. Pero podría haber otra forma de resolver su problema. – Richard

+0

¿Desea saber cuándo se cambia el tamaño de la ventana? ¿O específicamente por Aero Snap? Si específicamente Aero Snap, ¿por qué? Como dice Richard, podría haber otra forma de ayudar si conocemos el problema real. –

+0

Gracias por sus sugerencias, necesito guardar la posición y el tamaño antes de que Aero se rompa. – whunmr

Respuesta

4

Al salir, llame al GetWindowPlacement. Esto devolverá el tamaño y la posición de la ventana actual, y si está minimizado, maximizado o restord, también le dará el último tamaño y posición de la ventana "restaurada".

Para que no tenga que rastrear los cambios en la posición de su ventana, solo pregunte cuando lo necesite.

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

Gracias por su ayuda. – whunmr

+0

¿Por qué utiliza una llamada de Win API con P/Invoke? Creo que es mejor evitar esto y buscar una solución de biblioteca de clase .NET pura. –

+2

@Oliver: nada malo con P/Invocar. Esa funcionalidad la proporciona .NET Framework por una razón: para que pueda hacer cosas para las que todavía no proporciona una implementación administrada. La respuesta corta aquí es que * no hay * una implementación administrada que pueda hacer esto, por lo que P/Invocar es su única opción. –

Cuestiones relacionadas