Usando parâmetros Replaceable (do registrador pré-processador)
Parâmetros substituíveis permitir que o cliente do registrador especificar em time de execução dados.Para fazer isso, o registrador mantém um MAP de substituição no qual ele insere os valores associados com os parâmetros substituíveis em seu script.Registrador torna essas entradas em time de execução.
Usando % módulo %
The Assistente de controle do ATL gera automaticamente um script que usa %MODULE%. ATL usa esse parâmetro de substituição para o local real do EXE ou DLL do servidor.
Concatenando em time de execução dados com dados de script
Outro uso o pré-processador é concatenar dados de time de execução com dados de script.Por exemplo, suponha que uma entrada é necessária que contém um caminho completo para um módulo com a seqüência de caracteres", 1"anexada ao participante. Primeiro, defina a expansão do seguinte:
'MySampleKey' = s '%MODULE%, 1'
Então, antes de chamar um script processamento métodos listados no Chamar scripts, adicionar uma substituição para o MAP:
TCHAR szModule[_MAX_PATH];
::GetModuleFileName(_AtlBaseModule.GetModuleInstance(), szModule, _MAX_PATH);
p->AddReplacement(OLESTR("Module"), T2OLE(szModule));
Durante a análise do script, o registrador expande '%MODULE%, 1' para c:\mycode\mydll.dll, 1.
Observação: |
---|
Em um script de registrador, 4 K é o dimensionar máximo de token.(Um toke n é qualquer elemento reconhecível na sintaxe.) Isso inclui tokens que foram criados ou expandidos o pré-processador. |
Observação: |
---|
Para substituir valores de substituição em time de execução, remover a telefonar no script para o DECLARE_REGISTRY_RESOURCE or DECLARE_REGISTRY_RESOURCEID macro.Em vez disso, substitua-o por sua própria UpdateRegistry método que chama CAtlModule::UpdateRegistryFromResourceD or CAtlModule::UpdateRegistryFromResourceSe passe a matriz de _ATL_REGMAP_ENTRY estruturas.A matriz de _ATL_REGMAP_ENTRY deve ter pelo menos uma entrada é definida como {NULO,NULO}, e essa entrada deve ser sempre a última entrada.Caso contrário, um erro de violação de acesso será gerado quando UpdateRegistryFromResource é chamado. |
Observação: |
---|
Ao criar um projeto que produz um executável, o ATL adiciona automaticamente entre aspas o nome do caminho criado em time de execução com o MÓDULO % parâmetro do script de registrador.Não o nome do caminho para incluir as aspas, use o novo % MODULE_RAW % parâmetro em vez disso. Ao criar um projeto que produz uma DLL, ATL não adicionará aspas para o nome do caminho se MÓDULO % ou % MODULE_RAW % é usado. |