2010-05-09 18 views
10

Cuando cambio el tamaño de mi ventana, quiero decirle a otra parte de mi programa que mi ventana ha cambiado de tamaño. He leído en MSDN que:capture the last WM_SIZE

WM tamaño del mensaje
El mensaje TAMAÑO WM se envía a una ventana después de su tamaño ha cambiado.

Sin embargo, recibo el WM_SIZE incluso cuando se arrastra. Observé que también hay un mensaje WM_SIZING que se envía cuando se cambia el tamaño de mi ventana. Por el momento, no veo la diferencia entre WM_SIZE y WM_SIZING.

¿Hay alguna manera de que pueda capturar el último mensaje WM_SIZE, para no "spam" mi programa con mensajes de cambio de tamaño?

Respuesta

17

Cuando comienza a arrastrar una ventana, el sistema ingresa un ciclo de movimiento/cambio de tamaño modal; no regresa a su propio bucle de mensaje hasta que la acción de arrastre haya finalizado. Todavía está recibiendo WM_SIZE porque se envía directamente al procedimiento de ventana, pero no fluye a través de su propio bucle de mensajes.

En el inicio de una acción de arrastre tales modos de transporte, el sistema envía WM_ENTERSIZEMOVE a su procedimiento de ventana. Cuando suelte el botón del mouse, su aplicación obtendrá WM_EXITSIZEMOVE. Ese es probablemente el mensaje que desea activar.

+0

Di si estoy cambiando el tamaño mucho y necesito capturar todos estos tamaños. ¿Qué mensaje uso? – bluejamesbond

+0

@ mk1: use WM_SIZE – dns