Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


4.9.9e  El modelado en la programación Windows

§1  Sinopsis

La programación de aplicaciones para los Sistemas Windows de Microsoft presenta algunas singularidades propias; desde el punto de vista del programador C/C++ (idiomas para los que está pensada la API de Windows 1.7.2), cabría destacar la utilización abundantísima de constantes manifiestas; de typedef para definir nombres alternativos de los tipos básicos, y del modelado explícito de tipos.

Como hemos comentado en el apartado correspondiente ( 3.2.1a1), la principal razón de su uso es la portabilidad del código, ya que existen versiones de estos sistemas para máquinas de 16, 32 y 64 bits. Amén de sucesivas versiones de los mismos (W98, XP, NT, 2000 etc), así como versiones "light", como Windows ME, para dispositivos móviles; teléfonos, PDAs, Handhelds, etc.

En ocasiones las funciones de la API devuelven tipos que son dependientes del contexto, por lo que al utilizarlas, debemos asegurarnos de emplear el modelado adecuado y de que este sea lo más específico posible.  En casos extremos podemos encontrar incluso modelados sucesivos en una misma expresión. Como botón de muestra, incluimos un ejemplo de utilización propuesto en una publicación de Microsoft [1].

HBRUSH hbr;
hbr = (HBRUSH)(UINT)SendMessage(hwnd, WM_CTLCOLOR, ..., ...);

Tenga en cuenta que el tipo HBRUSH es puntero a un tipo especial de estructura; que WM_CTCOLOR es un tipo numérico, y que UINT es también un tipo numérico (probablemente unsigned int).

El documento señala que al utilizar este tipo de funciones, como SendMessage, antes de realizar el modelado al tipo necesario (HBRUSH en este caso), se debe realizar un modelado del valor devuelto a UINT. Esto es necesario para que el código se portable, ya que el tamaño de un puntero ("handle") puede ser 16 o 32 bits, dependiendo de la versión de Windows, y el modelado (UINT) asegura que la conversión sea correcta (a la longitud adecuada).

  Inicio.


[1]  Win32 Programming Techniques.