Formatos de archivo de recursos
En esta sección se describe el formato del archivo de recursos binarios que crea el compilador de recursos en función del contenido del archivo de definición de recursos. Este archivo normalmente tiene una extensión .res. El enlazador vuelve a formatear el archivo .res en un archivo de objeto de recurso y, a continuación, lo vincula al archivo ejecutable de una aplicación.
Un archivo de recursos binarios consta de varias entradas de recursos concatenadas. Cada entrada consta de un encabezado de recurso y los datos de ese recurso. Un encabezado de recurso está alineado con DWORD en el archivo y consta de lo siguiente:
- DWORD que contiene el tamaño del encabezado de recurso.
- DWORD que contiene el tamaño de los datos de recursos
- Tipo de recurso
- El nombre del recurso
- Información adicional sobre recursos
La estructura RESOURCEHEADER describe el formato de este encabezado. Los datos del recurso siguen el encabezado de recurso y son específicos de cada tipo de recurso. Algunos recursos también emplean una estructura de encabezado de grupo específica del recurso para proporcionar información sobre un grupo de recursos.
Recursos de tabla de aceleradores
Una tabla de aceleradores es una entrada de recurso en un archivo de recursos. No tiene un encabezado de grupo. Una estructura ACCELTABLEENTRY describe cada entrada de la tabla aceleradora. Se permiten varias tablas aceleradoras.
Recursos de cursor e icono
El sistema controla cada icono y cursor como un único archivo. Sin embargo, estos se almacenan en archivos .res y en archivos ejecutables como un grupo de recursos de icono de RT_GROUP_ICON o un grupo RT_GROUP_CURSOR de recursos de cursor. Los formatos de archivo de los recursos de icono y cursor son similares. En el archivo .res, un encabezado de grupo de recursos sigue todos los componentes individuales del icono o del grupo de cursores.
El encabezado de grupo para los recursos de icono y cursor consta de una estructura NEWHEADER más una o varias estructuras RESDIR . Hay una estructura RESDIR para cada icono o cursor. El encabezado de grupo contiene la información que una aplicación necesita para seleccionar el icono o el cursor correctos que se van a mostrar. Tanto el encabezado de grupo como los datos que se repiten para cada icono o cursor del grupo tienen una longitud fija. Esto permite que la aplicación acceda aleatoriamente a la información.
El formato de cada icono de RT_ICON o RT_CURSOR componente de recursos de cursor se parece mucho al formato del archivo .ico/.cur. Cada imagen se almacena en una estructura BITMAPINFO seguida de los bits de mapa de bits independientes del dispositivo (DIB) de color de la máscara XOR del icono. Los bits dib monocromáticos de la máscara AND siguen los bits dib de color. La diferencia significativa entre los cursores y los iconos es que los cursores tienen una estructura LOCALHEADER con una zona activa insertada antes de los datos del mapa de bits, mientras que los iconos no.
Dado que Windows Vista RT_ICON icono o recurso de cursor RT_CURSOR puede contener datos de imagen comprimidos por PNG.
Recursos del cuadro de diálogo
Un cuadro de diálogo también es una entrada de recurso en el archivo de recursos. Consta de una estructura de encabezado de cuadro de diálogo DLGTEMPLATE más una estructura DLGITEMTEMPLATE para cada control del cuadro de diálogo. Las estructuras DLGTEMPLATEEX y DLGITEMTEMPLATEEX describen el formato de los recursos extendidos del cuadro de diálogo.
Recursos de fuentes
Las fuentes se almacenan en el archivo de recursos como un grupo de recursos. Las fuentes individuales componen un grupo de fuentes. Una instrucción de definición de recursos FONT Statement en . El archivo RC define cada fuente. Cada fuente individual del recurso consta del contenido completo del archivo .fnt relacionado. Una estructura FONTGROUPHDR sigue todos los componentes de fuente individuales del archivo .res.
Los recursos de fuente no se agregan a los recursos de una aplicación específica. En su lugar, normalmente se agregan a los archivos ejecutables que tienen una extensión .fon. Estos archivos suelen ser archivos DLL de solo recursos en lugar de aplicaciones.
Recursos de menú
Un recurso de menú consta de una estructura MENUHEADER seguida de una o varias estructuras NORMALMENUITEM o POPUPMENUITEM , una para cada elemento de menú de la plantilla de menú. Los MENUEX_TEMPLATE_HEADER y las estructuras de MENUEX_TEMPLATE_ITEM describen el formato de los recursos de menú extendidos.
Recursos de tabla de mensajes
Una tabla de mensajes es un recurso que contiene texto con formato para mostrarse como un mensaje de error o en un cuadro de mensaje. La estructura principal de un recurso de tabla de mensajes es la estructura MESSAGE_RESOURCE_DATA .
Recursos de versión
La estructura principal de un recurso de versión es la estructura VS_FIXEDFILEINFO . Las estructuras adicionales incluyen la estructura VarFileInfo para almacenar datos de información de idioma y StringFileInfo para obtener información de cadena definida por el usuario. Todas las cadenas de un recurso de versión están en formato Unicode. Cada bloque de información se alinea en un límite DWORD .