none
Desarrollo windows mobile 6.5. Pantallas RRS feed

  • Pregunta

  • Hola,

    Estoy desarrollando una aplicación para smartphones en Visual C++ 2005.

    Necesito saber como puedo desarrollar las pantallas de la aplicación para que se adapten automáticamente a cualquier smartphone. Esto es que las pantallas se vean correctamente en un dispositivo con una resolución de 800 x 480 y por ejemplo en otro con una resolución menor como 320 x 240.

    Muchas gracias de antemano por vuestra ayuda.

    Saludos.

    martes, 4 de mayo de 2010 16:37

Todas las respuestas

  • Poder, lo que se dice poder, puedes, pero es un rollo bastante rollo, y más aún si lo estás haciendo en Win32 y no en MFC.

    En MFC la forma oficialmente correcta es la de desarrollar las diferentes plantillas de cuadros de diálogo conforme a cada resolución, con los mismos controles y los mismos nombres. Luego a uno de esos cuadros le creas una clase y todas las variables y todo el código, y luego a la hora de ejecutar miras las dimensiones de la pantalla y al instanciar la clase que va a representar el diálogo le pasas el ID del diálogo adecuado en el constructor, que tendrás que modificar para que no tenga un ID fijo. De este modo con un sólo código puedes controlar todas las pantallas:

    CDialogo miDialogo(IDD_OPCIONES800X480);
    miDialogo.ShowDialog();

    Otra forma es crearlo todo a mano con código, lo que es un rollo bastante complicado y propenso a errores, pero se puede hacer. Se trataría de una variación a esto que he publicado hace poco en la Web del Guille: http://www.elguille.info/mfc/MFC05.aspx, y en la misma serie hay más cosas que te podrían servir para crearlos de forma dinámica.


    MVP Visual C++ - Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/
    martes, 4 de mayo de 2010 18:37
    Moderador
  • Muchas gracias, tu respuesta me es de gran ayuda.

    Saludos.
    miércoles, 5 de mayo de 2010 8:04
  • Yo me inclino por la solución de Rafael, de tener diferentes recursos para
    cada resolución.
     
    Como alternativa menos deseable, puedes capturar el mensaje WM_MOVE
    (CDialog::OnMove) y ahí mover todos tus controles. Pero los cálculos que
    tienes que hacer son complicados, además de que te consumirán recursos. De
    todas formas, esta es otra opción.
     
    Saludos.
     
     
     


    Fernando Gómez
    fermasmas.wordpress.com
    miércoles, 5 de mayo de 2010 15:26
  • Gracias Fernando, así lo estoy haciendo. Utilizo diferentes recursos para las diferentes resoluciones.

    Rafael es RFOG, ¿no?.

     

    Saludos.

    jueves, 6 de mayo de 2010 8:04
  • Sí. :-)
    MVP Visual C++ - Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/
    jueves, 6 de mayo de 2010 8:06
    Moderador