Preparando um arquivo de configuração de recurso
Os utilitários MUIRCT e RC Compiler descritos em Utilitários de Recursos fornecem uma opção de linha de comando que permite especificar um arquivo de configuração de recursos para os recursos de linguagem base. O uso desse arquivo XML público legível por humanos permite mais controle sobre a divisão de recursos do que pode ser obtido usando as opções de linha de comando regulares dos utilitários. No entanto, mesmo que você não forneça um arquivo de configuração de recurso como uma entrada, os arquivos de recurso específicos do LN e da linguagem conterão dados de configuração de recursos.
Todos os arquivos de configuração de recursos para aplicativos Win32 começam e terminam de forma idêntica:
<?xml version="1.0" encoding="utf-8"?>
<localization>
<resources>
<!-- a single win32Resources element goes here -->
</resources>
</localization>
Este tópico se concentra nos aspectos do esquema XML que são úteis na criação de código não gerenciado no Windows Vista e posteriores. Em particular, ele só se preocupa com o comportamento do elemento win32Resources.
Elemento win32Resources
O elemento win32Resources tem os atributos descritos na tabela a seguir.
Nome do atributo | Obrigatório | Descrição |
---|---|---|
FileType | No | Tipo de arquivo. Deve ser sempre "Aplicativo". |
soma de verificação | No | Valor de soma de verificação a ser exibido nos dados de configuração de recursos do arquivo LN e dos arquivos de recursos específicos da linguagem. Por exemplo, esse atributo permite que você copie a soma de verificação de um único arquivo de recurso específico do idioma, por convenção aquele para inglês (Estados Unidos) e coloque a soma de verificação em um arquivo de recurso específico do idioma diferente. A soma de verificação pode ser especificada como uma cadeia de caracteres de número hexadecimal que não tem mais de 32 caracteres. O valor numérico deve ser contido em um número de 128 bits. |
Linguagem | No | Marca de idioma em conformidade com o IETF BCP 47 (Windows Vista e posterior), por exemplo, en-US para inglês (Estados Unidos). |
ultimateFallbackLanguage | No | Linguagem a ser inserida nos dados de configuração de recursos do arquivo LN, representando a linguagem de fallback final a ser usada em uma pesquisa para um arquivo de recurso específico do idioma correspondente. Se o carregador de recursos não carregar um arquivo de recurso solicitado das linguagens de interface do usuário preferenciais do thread, ele usará uma linguagem de fallback final como sua última tentativa. A marca de idioma em conformidade com o IETF BCP 47 (Windows Vista e posterior), por exemplo, en-US para inglês (Estados Unidos). |
ultimateFallbackLocation | No | Local do fallback. Especifique "interno" se os recursos de fallback finais forem compilados no arquivo LN. Especifique "externo" (padrão) se o arquivo LN fizer referência a um arquivo de recurso específico do idioma para seus recursos de fallback finais. |
No arquivo de configuração de recurso, o elemento win32Resources tem os subconjuntos descritos na próxima tabela.
Nome do elemento | Descrição |
---|---|
localizedResources | Recursos que encapsulam informações sobre os tipos de recursos e recursos individuais contidos em um arquivo de recurso específico do idioma. |
neutralResources | Recursos que encapsulam informações sobre os tipos de recursos contidos em um arquivo LN. |
Elemento localizedResources
Elemento recursos localizados. Por padrão, esse elemento não tem atributos e apenas um tipo de sub-elemento. É apenas um contêiner para elementos resourceType.
Nome do atributo | Descrição |
---|---|
resourceType | Tipo de um recurso individual contido em um arquivo de recurso específico do idioma. |
Elemento neutralResources
Elemento de recursos neutros. Esse elemento é apenas um contêiner para elementos resourceType.
Nome do atributo | Descrição |
---|---|
resourceType | Tipo de um único recurso contido em um arquivo LN. |
Elemento resourceType
O elemento resourceType encapsula informações sobre um único tipo de recurso ou recurso individual. Ele tem os atributos listados abaixo.
Cuidado
Alguns defeitos de configuração de recursos são capturados apenas pelo Compilador RC ou PELO MUIRCT, dependendo do arquivo de recurso de entrada ou do conteúdo do arquivo binário. Os erros resourceType no arquivo de configuração de recurso que não existem no arquivo de entrada não são capturados, resultando em um comportamento inesperado. Os usuários podem estar usando um arquivo de configuração de recurso defeituoso e não sabem até introduzir binários que usam as partes quebradas do arquivo de configuração de recursos, o que cria a aparência de que as quebras são dos binários atuais.
Nome do atributo | Obrigatório | Descrição |
---|---|---|
typeNameId | Yes | Nome do tipo ou identificador para o recurso. Especifique um nome de cadeia de caracteres ou um número. Se estiver usando um número, preenvia a cadeia de caracteres com um "#" para indicar que ela representa um número. Cada elemento resourceType deve ter apenas um atributo typeNameId . |
itemName | No | Cadeia de caracteres de nome do item para o recurso, a ser colocado no arquivo de recurso específico do idioma. Você pode especificar vários nomes, separados por espaços em branco, por exemplo, "HTML MOFDATA". |
itemId | No | Identificador de item de recurso individual, a ser colocado no arquivo de recurso específico do idioma. O item pode ser especificado como um intervalo (por exemplo, "1-12") ou por identificadores individuais separados por espaços em branco (por exemplo, "1 3 4"). |
stringId | No | Identificador de cadeia de caracteres para item de recurso individual, a ser colocado no arquivo de recurso específico do idioma. A cadeia de caracteres pode ser especificada como um intervalo (por exemplo, "1-12") ou por identificadores individuais separados por espaços em branco (por exemplo, "1 3 4"). Esse atributo permite a especificação de entradas de tabela de cadeia de caracteres localizáveis e nãocalizáveis. Ele deve ser usado em conjunto com o valor typeNameId de "6", indicando um tipo de recurso de entrada de tabela de cadeia de caracteres. As cadeias de caracteres são armazenadas em blocos de 16 em uma tabela de cadeia de caracteres. Por exemplo, as cadeias de caracteres de 0 a 15 são armazenadas em um único bloco de item de recurso e podem ser referenciadas no arquivo de configuração de recursos como itemId 1 ou como stringId "0-15". Por exemplo, se houver cinco cadeias de caracteres localizáveis e três cadeias de caracteres nãocalizáveis, você deverá atribuir identificadores de cadeia de caracteres 0-4 para as cadeias de caracteres localizáveis e identificadores de cadeia de caracteres 16-18 para as cadeias de caracteres nãocalizáveis. Se você não organizar cadeias de caracteres dessa forma, os blocos de cadeias de caracteres afetados serão colocados no arquivo LN e no arquivo de recurso específico do idioma. |
Se você especificar os atributos itemName, itemId e/ou stringId para um tipo de recurso específico no elemento localizedResource, somente esses itens ou cadeias de caracteres especificados para o tipo de recurso designado serão colocados no arquivo de recurso específico da linguagem. Se um elemento resourceType for especificado sem nenhum nome de item explícito, identificador de item ou identificador de cadeia de caracteres, todos os itens do tipo de recurso especificado serão colocados no arquivo de recurso específico do idioma. Itens ou tipos não listados em nenhum elemento localizedResource são colocados no arquivo LN.
Veja a seguir os tipos de recursos padrão e seus identificadores numéricos:
- CURSOR(1)
- BITMAP(2)
- ICON(3)
- MENU(4)
- DIALOG(5)
- STRING(6)
- FONTDIR(7)
- FONT(8)
- ACCELERATORS(9)
- RCDATA(10)
- MESSAGETABLE(11)
- GROUP_CURSOR(12)
- GROUP_ICON(14)
- VERSION(16)
- HTML(23)
Exemplo
<?xml version="1.0" encoding="utf-8"?>
<localization>
<resources>
<win32Resources fileType="Application">
<neutralResources>
<resourceType
typeNameId="#16"
/>
</neutralResources>
<localizedResources>
<resourceType
typeNameId="#2"
itemId="5 6 7 8 9 10 11 12"
itemName="HTML PRI"
/>
<resourceType
typeNameId="#4"
/>
<resourceType
typeNameId="#5"
/>
<resourceType
typeNameId="#6"
/>
<resourceType
typeNameId="#9"
/>
<resourceType
typeNameId="#11"
/>
<resourceType
typeNameId="#16"
/>
<resourceType
typeNameId="HTML"
/>
<resourceType
typeNameId="#23"
/>
<resourceType
typeNameId="#240"
/>
<resourceType
typeNameId="#1024"
/>
<resourceType
typeNameId="MY_TYPE"
/>
</localizedResources>
</win32Resources>
</resources>
</localization>
Comentários
Se você incluir qualquer tipo de recurso ICON(3), DIALOG(5), STRING(6) ou VERSION(16) no elemento neutralResources, será necessário duplicar essa entrada no elemento localizedResources. Você pode ver isso ilustrado no exemplo acima, em que o tipo de recurso 16 aparece nas seções de recursos neutros e localizados.