Sdílet prostřednictvím


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%. .

Viz také

Vytváření skriptů registrátoru