visual uso una tipos que opciones los hacer elementos diálogo dialogo cuadros cuadro como caja abrir c++ windows mfc dialog resize

uso - Clase de resistores de diálogo de Windows C++



tipos de cuadros de dialogo y uso en visual (7)

Estoy buscando una clase de resizer de diálogo muy buena que estire y encoja los elementos individuales según sea necesario a medida que se cambia el tamaño de la pantalla. Stephan Keil tiene uno bueno (DlgResizeHelper) que básicamente cambia el tamaño de todo por una proporción establecida, pero estoy buscando algo más inteligente.

Por ejemplo:

  • Los íconos no deberían cambiar el tamaño

  • Los cuadros de texto de una sola línea no deben estirarse verticalmente

  • Los botones probablemente deberían permanecer del mismo tamaño

Básicamente estoy buscando algo para mirar todos los controles, descubrir que un campo de texto estático está relacionado con un control al lado / debajo de él y unir los dos, y cambiar el tamaño de los controles grandes de una manera "inteligente" para que se vea bueno.

¿Hay tales marcos por ahí? He estado trabajando en uno, pero algo listo sería mejor.

SEGUIMIENTO: estoy viendo las soluciones sugeridas. Muchos de ellos requieren que ancle cada control en el diálogo. Estoy buscando algo inteligente que descubra qué deberían ser los anclajes, con la capacidad de anclar manualmente si las suposiciones son incorrectas. Parece que debería ser posible: la mayoría de los humanos estarían de acuerdo en que un campo de texto estático al lado de un campo de edición debería estar anclado. Supongo que estoy buscando una pequeña IA aquí :)


Esta es una solución gratuita también de CodeProject
http://www.codeproject.com/KB/dialog/dlgresizearticle.aspx
Es solo un conjunto de macros simples que colocan controles a medida que el diálogo cambia de tamaño.

Editar - siguiendo los comentarios de OPs. No conozco ningún soporte de medida general como QT / WX para MFC, tampoco parece estar presente en nuevos frameworks como Winforms.
Está en QT / WX porque es necesario para multiplataforma donde los widgets pueden tener un tamaño diferente, lo que explica la falta de MS. Pero también es vital para puertos multi-idioma, ej. donde el alemán para cancelar tiene 30 caracteres de largo.


Intenté muchos y finalmente me decidí por http://www.codeproject.com/KB/dialog/layoutmgr.aspx . Sin embargo, no hace el diseño "inteligente" que sugieres. Nunca he visto eso en ninguna biblioteca, en ninguna plataforma; no veo cómo funcionaría sin tener mucha magia bajo el capó que de todos modos tendría que anularse la mitad de las veces.


La biblioteca de Ultimate Toolbox MFC ( aquí en CodeProject) incluye un administrador de diseño . No lo he usado, pero parece que hace lo que quieres.


Puedes usar wxWidgets. Reemplaza completamente a MFC, es multiplataforma y le brinda un mecanismo de diálogo basado en diseño.


Usamos la clase CResize de CodeGuru para cambiar el tamaño de todos los controles automáticamente. Usted dice cómo quiere que se cambie el tamaño de cada control y lo hace por usted.

El paradigma de cambio de tamaño es especificar cuánto se moverá cada lado de un control cuando se cambie el tamaño del diálogo.

SetResize(IDC_EDIT1, 0, 0, 0.5, 1); SetResize(IDC_EDIT2, 0.5, 0, 1, 1);

Muy útil cuando tienes una gran cantidad de controles de diálogo.

Código fuente


Yo uso ResizableLib (también hace PropertySheets y Pages) fuera de codeproject, IIRC. Establece puntos de anclaje que determinan cómo el diálogo y los controles cambian de tamaño o se mueven a medida que se mueve el diálogo.

Puede configurar hasta 2 anclas por control, (izquierda, derecha) para que pueda moverlas a medida que se mueve el cuadro de diálogo, o cambiar su tamaño a medida que se mueve. Es muy fácil de entender, si es difícil de hacer perfectamente bien :)


Puede ver la GUI profesional que utilizamos su biblioteca de clase para cambiar el tamaño de nuestros controles de diálogo. Creo que eso es parte de su versión gratuita.