Usar parâmetros substituíveis (o pré-processador do registrador)

Os parâmetros substituíveis permitem que o cliente do Registrador especifique dados em tempo de execução. Para fazer isso, o Registrador mantém um mapa de substituição no qual insere os valores associados aos parâmetros substituíveis em seu script. O Registrador faz essas entradas no tempo de execução.

Usar %MODULE%

O Assistente de Controle de ATL gera automaticamente um script que usa %MODULE%. O ATL usa esse parâmetro substituível para o local real da DLL ou de EXE do servidor.

Concatenar dados em tempo de execução com dados de script

Outro uso do pré-processador é concatenar dados em tempo de execução com dados de script. Por exemplo, suponha que seja necessária uma entrada que contenha um caminho completo para um módulo com a cadeia de caracteres ", 1" anexada no final. Primeiro, defina a seguinte expansão:

'MySampleKey' = s '%MODULE%, 1'

Em seguida, antes de chamar um dos métodos de processamento do script listados em Invocar scripts, adicione um substituto ao mapa:

TCHAR szModule[_MAX_PATH];
::GetModuleFileName(_AtlBaseModule.GetModuleInstance(), szModule, _MAX_PATH);
p->AddReplacement(OLESTR("Module"), T2OLE(szModule));   

Durante a análise do script, o Registrador expandirá para '%MODULE%, 1' para c:\mycode\mydll.dll, 1.

Observação

Em um script do Registrador, 4K é o tamanho máximo do token. (Um token é todo elemento reconhecível na sintaxe.) Isso inclui tokens que foram criados ou expandidos pelo pré-processador.

Observação

Para substituir valores de substituição em tempo de execução, remova a chamada no script para a macro DECLARE_REGISTRY_RESOURCE ou DECLARE_REGISTRY_RESOURCEID. Em vez disso, substitua-o pelo próprio método UpdateRegistry que chama CAtlModule::UpdateRegistryFromResourceD ou CAtlModule::UpdateRegistryFromResourceS, e passe a matriz de estruturas _ATL_REGMAP_ENTRY. A matriz de _ATL_REGMAP_ENTRY deverá ter pelo menos uma entrada definida como {NULL,NULL} e essa entrada sempre deverá ser a última entrada. Caso contrário, um erro de violação de acesso será gerado quando o UpdateRegistryFromResource for chamado.

Observação

Ao compilar um projeto que gera um executável, o ATL adiciona aspas automaticamente ao redor do nome do caminho criado em tempo de execução com o parâmetro de script do registrador %MODULE%. Se você não quiser as aspas incluídas no nome do caminho, use o novo parâmetro %MODULE_RAW%.

Ao criar um projeto que gera uma DLL, o ATL não adicionará aspas ao nome do caminho se %MODULE% ou %MODULE_RAW% for usado.

Confira também

Criando scripts do Registrador