Použití nahraditelných parametrů (preprocesor registrátoru)
Nahraditelné parametry umožňují klientovi registrátora zadat data za běhu. Za tímto účelem registrátor udržuje náhradní mapu, do které zadá hodnoty přidružené k nahraditelným parametrům ve vašem skriptu. Registrátor tyto položky provede za běhu.
Použití %MODULE%
Průvodce ovládacím prvek ATL automaticky vygeneruje skript, který používá %MODULE%
. AtL používá tento nahraditelný parametr pro skutečné umístění knihovny DLL nebo EXE vašeho serveru.
Zřetězení dat za běhu s daty skriptu
Dalším použitím preprocesoru je zřetězení dat za běhu s daty skriptu. Předpokládejme například, že je potřeba, aby položka obsahovala úplnou cestu k modulu s řetězcem ", 1
" připojeným na konci. Nejprve definujte následující rozšíření:
'MySampleKey' = s '%MODULE%, 1'
Potom před voláním jedné z metod zpracování skriptů uvedených v vyvolání skriptů přidejte do mapy náhradu:
TCHAR szModule[_MAX_PATH];
::GetModuleFileName(_AtlBaseModule.GetModuleInstance(), szModule, _MAX_PATH);
p->AddReplacement(OLESTR("Module"), T2OLE(szModule));
Během analýzy skriptu se registrátor rozbalí '%MODULE%, 1'
na c:\mycode\mydll.dll, 1
.
Poznámka:
Ve skriptu registrátora je maximální velikost tokenu 4K. (Token je jakýkoli rozpoznatelný prvek v syntaxi.) To zahrnuje tokeny, které byly vytvořeny nebo rozšířeny preprocesorem.
Poznámka:
Pokud chcete nahradit náhradní hodnoty za běhu, odeberte volání ve skriptu do DECLARE_REGISTRY_RESOURCE nebo DECLARE_REGISTRY_RESOURCEID makra. Místo toho ji nahraďte vlastní UpdateRegistry
metodou, která volá CAtlModule::UpdateRegistryFromResourceD nebo CAtlModule::UpdateRegistryFromResourceS a předejte pole _ATL_REGMAP_ENTRY struktur. Pole _ATL_REGMAP_ENTRY musí obsahovat alespoň jednu položku, která je nastavená na hodnotu {NULL,NULL}, a tato položka by měla být vždy poslední položkou. Jinak se při zavolání vygeneruje UpdateRegistryFromResource
chyba porušení přístupu.
Poznámka:
Při vytváření projektu, který vypíše spustitelný soubor, ATL automaticky přidá uvozovky kolem názvu cesty vytvořeného za běhu pomocí parametru skriptu registrátora %MODULE% . Pokud nechcete, aby název cesty obsahoval uvozovky, použijte místo toho nový parametr %MODULE_RAW %.
Při vytváření projektu, který vytváří výstup knihovny DLL, ATL nepřidá do názvu cesty uvozovky, pokud se použije %MODULE% nebo %MODULE_RAW%. .