Utilizzo di parametri sostituibili (il preprocessore di registrazione)
I parametri sostituibili consentono del client di un registrar di registrar specificare i dati di runtime.A tale scopo, il registrar gestisce una mappa di sostituzione di che fornisce i valori associati ai parametri sostituibili nello script.Il registrar tali voci in fase di esecuzione.
Utilizzando %MODULE%
La creazione guidata controllo ATL genera automaticamente uno script che utilizza %MODULE%.ATL utilizza questo parametro sostituibile per il percorso effettivo della DLL o del file EXE del server.
Concatenare i dati di runtime con i dati dello script
Un altro utilizzo del preprocessore è di concatenare i dati di runtime con i dati dello script.Ad esempio, si supponga di una voce si richiedono che contiene il percorso completo di un modulo con la stringa ", 1" aggiunto alla fine.Innanzitutto, definire espansione la seguente:
'MySampleKey' = s '%MODULE%, 1'
Quindi, prima di chiamare uno dei metodi di elaborazione di script elencati in script di chiamata, aggiungere una sostituzione al mapping:
TCHAR szModule[_MAX_PATH];
::GetModuleFileName(_AtlBaseModule.GetModuleInstance(), szModule, _MAX_PATH);
p->AddReplacement(OLESTR("Module"), T2OLE(szModule));
Durante l'analisi dello script, il registrar espande '%MODULE%, 1' a c:\mycode\mydll.dll, 1.
[!NOTA]
In uno script di registrazione, 4K è la dimensione massima del token.(Il token di un oggetto è qualsiasi elemento riconoscibile nella sintassi.) Sono inclusi i token creati o espanso stati dal preprocessore.
[!NOTA]
Per sostituire i valori di sostituzione in fase di esecuzione, rimuovere la chiamata dello script alla macro DECLARE_REGISTRY_RESOURCEID o DECLARE_REGISTRY_RESOURCE.Invece, sostituirlo con il metodo UpdateRegistry che chiama CAtlModule::UpdateRegistryFromResourceD o CAtlModule::UpdateRegistryFromResourceSe passare la matrice di strutture _ATL_REGMAP_ENTRY.La matrice _ATL_REGMAP_ENTRY deve avere almeno una voce che viene impostataNULL{,}NULLe questa voce deve essere sempre l'ultima voce.In caso contrario, verrà generato un errore di violazione di accesso viene generato 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 percorso di includere le virgolette, utilizzare il nuovo parametro %MODULE_RAW% anziché.
Quando si compila un progetto che restituisce una DLL, ATL non verranno aggiunte le virgolette al nome del percorso se %MODULE% o %MODULE_RAW% viene utilizzato.