Uso dei parametri sostituibili (preprocessore del registrar)
I parametri sostituibili consentono al client di un registrar di specificare i dati di runtime. A tale scopo, registrar gestisce una mappa di sostituzione in cui immette i valori associati ai parametri sostituibili nello script. Il registrar effettua queste voci in fase di esecuzione.
Utilizzo di %MODULE%
La Creazione guidata controllo ATL genera automaticamente uno script che usa %MODULE%
. ATL usa questo parametro sostituibile per la posizione effettiva della DLL o exe del server.
Concatenazione di dati di runtime con dati script
Un altro uso del preprocessore consiste nel concatenare i dati di runtime con i dati di script. Si supponga, ad esempio, che sia necessaria una voce contenente un percorso completo di un modulo con la stringa ", 1
" aggiunta alla fine. Prima di tutto, definire l'espansione seguente:
'MySampleKey' = s '%MODULE%, 1'
Quindi, prima di chiamare uno dei metodi di elaborazione degli script elencati in Chiamata di script, aggiungere una sostituzione alla mappa:
TCHAR szModule[_MAX_PATH];
::GetModuleFileName(_AtlBaseModule.GetModuleInstance(), szModule, _MAX_PATH);
p->AddReplacement(OLESTR("Module"), T2OLE(szModule));
Durante l'analisi dello script, il registrar si espande '%MODULE%, 1'
in c:\mycode\mydll.dll, 1
.
Nota
In uno script registrar, 4K è la dimensione massima del token. Un token è un elemento riconoscibile nella sintassi. Sono inclusi i token creati o espansi dal preprocessore.
Nota
Per sostituire i valori di sostituzione in fase di esecuzione, rimuovere la chiamata nello script alla macro DECLARE_REGISTRY_RESOURCE o DECLARE_REGISTRY_RESOURCEID . Sostituirlo invece con il proprio UpdateRegistry
metodo che chiama CAtlModule::UpdateRegistryFromResourceD o CAtlModule::UpdateRegistryFromResourceS e passare la matrice di strutture _ATL_REGMAP_ENTRY. La matrice di _ATL_REGMAP_ENTRY deve avere almeno una voce impostata su {NULL,NULL}e questa voce deve essere sempre l'ultima voce. In caso contrario, verrà generato un errore di violazione di accesso quando UpdateRegistryFromResource
viene chiamato .
Nota
Quando si compila un progetto che restituisce un eseguibile, ATL aggiunge automaticamente le virgolette intorno al nome del percorso creato in fase di esecuzione con il parametro di script di registrazione %MODULE%. Se non si desidera che il nome del percorso includa le virgolette, utilizzare invece il nuovo parametro %MODULE_RAW%.
Quando si compila un progetto che restituisce una DLL, ATL non aggiungerà virgolette al nome del percorso se viene utilizzato %MODULE% o %MODULE_RAW%.