Compartilhar via


Usando parâmetros substituível (escrivão) do pré-processador

Os parâmetros substituível permitem que o cliente de um escrivão especifica dados em tempo de execução. Para fazer isso, o escrivão mantém um mapa de substituição em que incorpora os valores associados com os parâmetros substituível no script. O escrivão faz essas entradas em tempo de execução.

Usando %MODULE%

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

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

Outro uso pré-processamento é concatenar dados em tempo de execução com dados de script. Por exemplo, suponha que uma entrada é necessária que contém um caminho completo de um módulo com a cadeia de caracteres “, 1” acrescentado no final. Primeiro, defina a expansão seguir:

'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 para o mapa:

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

Durante a análise de script, o escrivão expande '%MODULE%, 1' a c:\mycode\mydll.dll, 1.

Dica

Em um script de escrivão, 4K é o tamanho máximo simbólico.(O símbolo de é qualquer elemento reconhecível na sintaxe.) Isso inclui os tokens que foram criados ou expandidos pelo pré-processador.

Dica

Para substituir em tempo de execução valores de substituição, remova a chamada no script a macro de DECLARE_REGISTRY_RESOURCE ou de DECLARE_REGISTRY_RESOURCEID .Em vez de isso, substituí-lo com seu próprio método de UpdateRegistry que chama CAtlModule::UpdateRegistryFromResourceD ou CAtlModule::UpdateRegistryFromResourceS, e passe o seu vetor de estruturas de _ATL_REGMAP_ENTRY .Sua matriz de _ATL_REGMAP_ENTRY deve ter pelo menos uma entrada que é definida,NULO} {NULO, e essa entrada deve sempre ser a última entrada.Caso contrário, um erro de violação de acesso será gerado quando UpdateRegistryFromResource é chamado.

Dica

Quando criar um projeto que a saída executável, um ATL adicionar automaticamente aspas ao redor do nome do caminho criou em tempo de execução com o parâmetro de script de escrivão de %MODULE% .Se você não deseja que o nome do caminho para incluir as aspas, use o novo parâmetro de %MODULE_RAW% em vez de isso.

A o criar um projeto que a saída uma DLL, ATL não irão aumentar a aspas ao nome do caminho se %MODULE% ou %MODULE_RAW% são usados.

Consulte também

Referência

Criando scripts de escrivão