[ contenidos | #winprog ]

Notas sobre Archivos de Recursos

Argh!

La �nica cosa que realmente odiaba cuando cambi� mi entorno de programaci�n, de Borland C++ a MS VC++, fu� la forma en que VC++ maneja los scripts de recursos (archivos.rc).

En Borland C++ era libre de controlar la disposici�n y el contenido de los archivos .rc y cuando usaba el editor de recursos, s�lo las cosas que yo espec�ficamente cambiaba eran cambiadas en el archivo. En cambio, el editor de recursos de VC++, reescribe completamente el archivo .rc y posiblemente destruye o ignora los cambios que personalmente realizo.

En un principio esto fu� terriblemente frustrante, pero b�sicamente he aprendido a trabajar con �l y despu�s de todo no es TAN malo, debido a que, en general no escribo tanta cantidad de recursos a mano, salvo aquellos con cambios menores que quiz�s no pueden realizarse por completo en el editor de recursos.

Compatibilidad

Un peque�o cambio que se hizo en este tutorial fu� lograr que los archivos de recursos compilen de forma correcta bajo VC++ y BC++ sin realizar cambios. En el tutorial original he usado la convenci�n de nombres para los encabezados de recursos utilizada por Borland, la cual era nombre_proyecto.rh. Sin embargo, por default, en VC++ este encabezado SIEMPRE es llamado resource.h, por lo tanto por simplicidad he adoptado este �ltimo para la revisi�n actual del tutorial que no impacta en BC++ (no del todo).

Para los curiosos, es posible cambiar el nombre del recurso que usa VC++ editando manualmente el archivo .rc y cambiando el nombre en dos lugares, primero donde es inlcu�do (#include) y segundo en el recurso TEXTINCLUDE donde est� contenido.

El segundo problema es que, por default, VC++ requiere que sea inclu�do dentro del archivo de recursos el archivo afxres.h , mientras que BC++ tiene todas las macros del preprocesador que se necesitan, definidas de forma autom�tica y por lo tanto no requiere dicha inclusi�n. Otra cosa asombrosa es que afxres.h solo es instalado si instalas MFC, lo cual no todo el mundo hace, a�n cuando est�s creando una aplicaci�n API la cu�l solo requiere winres.h, que siempre es instalada.

Debido a que he trabajado con VC++ y he usado su editor de recursos, pude resolver este problema alterando ligeramente cada archivo .rc incluyendo lo siguiente:

#ifndef __BORLANDC__
#include "winres.h"
#endif

Lo cual bajo circunstancias normales prodr�a leerse:

#include "afxres.h"
Para aquellos que est�n usando VC++ pueden encontrar la opci�n de cambiar este texto dentro del IDE atrav�s de "View > Resource Includes". Generalmente, en la pr�ctica normal, no hay necesidad de hacer siempre esto, s�lo es una forma que he usado para solucionar el problema de trabajar con VC++ y BC++ al mismo tiempo.

Para aquellos que usan BC++, pido disculpas por toda la basura que es generada por el editor de recursos de VC++, pero no puedo hacer nada al respecto.

Compilaci�n de Recursos bajo BC++

Por mas que lo intente no puedo encontrar una forma simple de compilar un programa en BC++ que incluya archivos RC y �ltimamente tuve que configurarlo en una configuraci�n no-�ptima que encontrar�s en los archivos "make" inclu�dos con el c�digo fuente de este tutorial. Puedes encontrar notas sobre el compilador de BC++ en Free Borland C++ Command Line Tools.
Copyright © 1998-2003, Brook Miles (
theForger). All rights reserved.

Versi�n en Espa�ol: Federico Pizarro - 2003