Partilhar via


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

Os parâmetros substituíveis permitem que o cliente de um Registrar 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 Registrar faz estas entradas em tempo de execução.

Usando %MODULE%

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

Concatenando dados de Run-Time com dados de script

Outro uso do pré-processador é concatenar dados de 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 de script listados em Invocando scripts, adicione uma substituição 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 Registrar expande '%MODULE%, 1' para c:\mycode\mydll.dll, 1.

Observação

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

Observação

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

Observação

Ao criar um projeto que gera um executável, a ATL adiciona automaticamente aspas em torno do nome do caminho criado em tempo de execução com o parâmetro de script do registrador%MODULE%. Se você não quiser que o nome do caminho inclua as aspas, use o novo parâmetro %MODULE_RAW% .

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

Ver também

Criando scripts de Registo