Limitar el tamaño minimo de una ventana marco resizable.
Tengo un programa con una ventana marco resizable. ¿Como puedo limitar el encogimiento de la ventana cuando esta alcanza el tamaño minimo deseado?
Antares.
Se me ocurre una manera, utilizando la API de Windows, aunque es perfectamente aplicable a cualquier API de programación de ventanas.
Utiliza el evento WM_SIZE. Con él detectas cuando se está redimensionando la ventana, y que dimensiones tiene. Compruebas estas dimensiones, y si es menor que el área mínima que deseas, entonces redimensionas la ventana para hacerla tan grande como ese área.
Sencillísimo, ¿no?
Prueba el mensaje WM_GETMINMAXINFO. Si estás con las MFC, te creará una función así:
void CVentana::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
donde podrás establecer unos valores mínimos para la ventana:
lpMMI->ptMinTrackSize.x =320;
lpMMI->ptMinTrackSize.y =180;
un saludo
edito: mensaje con J, me lio siempre con el inglés
Como dice fiero, ese mensaje te servirá. Según la MSDN y si utilizas Win32 a pelo, el parámetro lParam del mensaje (wParam no se utiliza), debe apuntar a una estructura del tipo:
typedef struct {
POINT ptReserved;
POINT ptMaxSize;
POINT ptMaxPosition;
POINT ptMinTrackSize;
POINT ptMaxTrackSize;
} MINMAXINFO;
donde podrás especificar el tamaño mínimo de tu ventana (además de otros valores).
Saludos.
Con el mensaje WM_SIZE lo uso para redimensionar los controles a la ventana y lo intente hacer desde ahi pero por lo visto cuando sueltas el boton del raton se vuelve a dibujar la ventana haciendo inuteles mis if's :P
¡Berseker! Eres el mismo Breseker que me vapuleaba hace unos años en el Starcraft? :D Yo entraba como OrionMaps aunque igual no te acuerdas mi ;)
gracias a todos, voy a probar.
he estado tiempo que tenia el otro formato anterior del foro y parecia que no entraba nadie veia mis mensajes sin contestacion y nadie preguntaba nada si contestaba, solo yo :P Me alegro mucho de volver a encontraros, mientras tanto he estado en otros foros, muy buena gente, pero es que aki hay respuestas rapidas y de calidad :_)_______
Antares
Antares me temo que no soy yo...si me dijeras que soy el que te vapuleaba al quake3 vale, pero al starcraft... :)
Saludos
Me funciono con el WM_GETMINMAXINFO. Se me olvido daros las gracias a todos. sorry
Antares