Compartilhar via


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 é alinhado ao DWORD 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 estrutura RESOURCEHEADER 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 aceleradora é uma entrada de recurso em um arquivo de recurso. Ele não tem um cabeçalho de grupo. Uma estrutura ACCELTABLEENTRY 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 os recursos de ícone e cursor consiste em uma estrutura NEWHEADER mais uma ou mais estruturas RESDIR . 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 de cursor se assemelha muito ao formato do arquivo .ico/.cur. Cada imagem é armazenada em uma estrutura BITMAPINFO seguida pelos bits DIB (bitmap independente de dispositivo) de cor da máscara XOR do ícone. Os bits DIB monocromáticos da máscara 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 RT_ICON do Windows Vista ou RT_CURSOR recurso de cursor pode conter dados de imagem compactados em 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álogo DLGTEMPLATE mais uma estrutura DLGITEMTEMPLATE para cada controle na caixa de diálogo. As estruturas DLGTEMPLATEEX e DLGITEMTEMPLATEEX descrevem 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 de definição de recurso de instrução FONT no . O arquivo RC define cada fonte. Cada fonte individual no recurso consiste no conteúdo completo do arquivo .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.

Um recurso de menu consiste em uma estrutura MENUHEADER seguida por uma ou mais estruturas NORMALMENUITEM ou POPUPMENUITEM , uma para cada item de menu no modelo de menu. As estruturas MENUEX_TEMPLATE_HEADER e 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 main em um recurso de tabela de mensagens é a estrutura MESSAGE_RESOURCE_DATA.

Recursos de versão

A estrutura main em um recurso de versão é a estrutura VS_FIXEDFILEINFO. Estruturas adicionais incluem a estrutura VarFileInfo para armazenar dados de informações de linguagem 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 DWORD .