Formatos de arquivo de recurso
Esta seção descreve o formato do arquivo de recurso binário que o compilador de recursos cria com base no conteúdo do arquivo de definição de recurso. Esse arquivo geralmente tem uma extensão .res. O vinculador reformata o arquivo .res em um arquivo de objeto de recurso e o vincula ao arquivo executável de um aplicativo.
Um arquivo de recurso binário consiste em várias entradas de recurso concatenadas. Cada entrada consiste em um cabeçalho de recurso e os dados desse recurso. Um cabeçalho de recurso é DWORDalinhado no arquivo e consiste no seguinte:
- Um DWORD que contém o tamanho do cabeçalho do recurso
- Um DWORD que contém o tamanho dos dados do recurso
- O tipo de recurso
- O nome do recurso
- Informações adicionais do recurso
A estruturaRESOURCEHEADER descreve o formato desse cabeçalho. Os dados do recurso seguem o cabeçalho do recurso e são específicos para cada tipo de recurso. Alguns recursos também empregam uma estrutura de cabeçalho de grupo específica do recurso para fornecer informações sobre um grupo de recursos.
Recursos da Tabela de Aceleradores
Uma tabela de acelerador é uma entrada de recurso em um arquivo de recurso. Ele não tem um cabeçalho de grupo. Uma estruturaACCELTABLEENTRY descreve cada entrada na tabela de aceleradores. Várias tabelas de acelerador são permitidas.
Recursos de cursor e ícone
O sistema manipula cada ícone e cursor como um único arquivo. No entanto, eles são armazenados em arquivos .res e em arquivos executáveis como um grupo de recursos de ícone de RT_GROUP_ICON ou um grupo RT_GROUP_CURSOR de recursos de cursor. Os formatos de arquivo dos recursos de ícone e cursor são semelhantes. No arquivo .res, um cabeçalho de grupo de recursos segue todos os componentes individuais do ícone ou do grupo de cursores.
O cabeçalho de grupo para recursos de ícone e cursor consiste em uma estrutura NEWHEADER mais uma ou mais estruturas deRESDIR. Há uma estrutura RESDIR para cada ícone ou cursor. O cabeçalho do grupo contém as informações que um aplicativo precisa para selecionar o ícone ou cursor correto a ser exibido. O cabeçalho do grupo e os dados que se repetem para cada ícone ou cursor no grupo têm um comprimento fixo. Isso permite que o aplicativo acesse aleatoriamente as informações.
O formato de cada ícone de RT_ICON ou RT_CURSOR componente de recurso do cursor se assemelha muito ao formato do arquivo .ico/.cur. Cada imagem é armazenada em uma estruturaBITMAPINFOseguida pelos bits DIB (bitmap independente do dispositivo) de cor da máscara de XOR do ícone. Os bits de DIB monocromáticos da máscara de AND seguem os bits DIB de cor. Uma diferença significativa entre cursores e ícones é que os cursores têm uma estrutura LOCALHEADER com um hotspot inserido antes dos dados de bitmap, enquanto os ícones não.
Como o ícone do Windows Vista RT_ICON ou RT_CURSOR recurso de cursor pode conter dados de imagem compactados por PNG.
Recursos da caixa de diálogo
Uma caixa de diálogo também é uma entrada de recurso no arquivo de recurso. Ele consiste em uma estrutura de cabeçalho de caixa de diálogoDLGTEMPLATEmais uma estrutura deDLGITEMTEMPLATEpara cada controle na caixa de diálogo. ADLGTEMPLATEEXe as estruturas deDLGITEMTEMPLATEEXdescrevem o formato dos recursos da caixa de diálogo estendida.
Recursos de fonte
As fontes são armazenadas no arquivo de recurso como um grupo de recursos. Fontes individuais compõem um grupo de fontes. Uma instrução FONT instrução de definição de recurso no . O arquivo RC define cada fonte. Cada fonte individual no recurso consiste no conteúdo completo do arquivo de .fnt relacionado. Uma estrutura FONTGROUPHDR segue todos os componentes de fonte individuais no arquivo .res.
Os recursos de fonte não são adicionados aos recursos de um aplicativo específico. Em vez disso, eles normalmente são adicionados a arquivos executáveis que têm uma extensão .fon. Esses arquivos geralmente são DLLs somente de recursos em vez de aplicativos.
Recursos de menu
Um recurso de menu consiste em uma estrutura MENUHEADER seguida por um ou mais NORMALMENUITEM ou estruturas de POPUPMENUITEM, uma para cada item de menu no modelo de menu. O MENUEX_TEMPLATE_HEADER e as estruturas de MENUEX_TEMPLATE_ITEM descrevem o formato dos recursos de menu estendido.
Recursos da Tabela de Mensagens
Uma tabela de mensagens é um recurso que contém texto formatado para exibição como uma mensagem de erro ou em uma caixa de mensagem. A estrutura principal em um recurso de tabela de mensagens é a estrutura MESSAGE_RESOURCE_DATA.
Recursos de versão
A estrutura principal em um recurso de versão é a estrutura VS_FIXEDFILEINFO. Estruturas adicionais incluem a estruturaVarFileInfo para armazenar dados de informações de idioma e StringFileInfo para obter informações de cadeia de caracteres definidas pelo usuário. Todas as cadeias de caracteres em um recurso de versão estão no formato Unicode. Cada bloco de informações é alinhado em um limite de DWORD.