Kontejnery: Pokročilé funkce
Tento článek popisuje kroky nezbytné k začlenění volitelných pokročilých funkcí do stávajících kontejnerových aplikací. K těmto funkcím patří:
Vytvoření kontejnerové nebo serverové aplikace
Aplikace typu kontejner/server je aplikace, která funguje jako kontejner i server. Příkladem je Microsoft Word pro Windows. Dokumenty Wordu pro Windows můžete vkládat do jiných aplikací a můžete také vkládat položky do dokumentů Wordu pro Windows. Proces úpravy aplikace kontejneru tak, aby byl kontejnerem i úplným serverem (nemůžete vytvořit kombinaci aplikace typu kontejner/miniserver), je podobný procesu pro vytvoření celého serveru.
Článek Servery: Implementace serveru obsahuje řadu úloh potřebných k implementaci serverové aplikace. Pokud převedete aplikaci typu kontejner na aplikaci typu kontejner/server, musíte provést některé z těchto stejných úloh a přidat do kontejneru kód. Následující seznam obsahuje důležité informace, které je potřeba vzít v úvahu:
Kód kontejneru vytvořený průvodcem aplikací již inicializuje subsystém OLE. Pro tuto podporu nebudete muset nic měnit ani přidávat.
Kdekoli je
COleDocument
základní třída třídy dokumentu , změňte základní třídu naCOleServerDoc
.Pokud
COleClientItem::CanActivate
se chcete vyhnout úpravám položek na místě, zatímco samotný server se používá k úpravám.Například ukázka MFC OLE OCLIENT obsahuje vloženou položku vytvořenou vaší kontejnerovou/serverovou aplikací. Otevřete aplikaci OCLIENT a místní úpravu položky vytvořené vaší aplikací typu kontejner/server. Při úpravách položky aplikace se rozhodnete vložit položku vytvořenou ukázkou HIERSVR knihovny MFC OLE. K tomu není možné použít místní aktivaci. Chcete-li aktivovat tuto položku, musíte plně otevřít HIERSVR. Protože knihovna tříd Microsoft Foundation nepodporuje tuto funkci OLE, přepsání
COleClientItem::CanActivate
umožňuje zkontrolovat tuto situaci a zabránit možné chybě za běhu v aplikaci.
Pokud vytváříte novou aplikaci a chcete, aby fungovala jako aplikace typu kontejner nebo server, zvolte tuto možnost v dialogovém okně Možnosti OLE v průvodci aplikací a tato podpora se vytvoří automaticky. Další informace najdete v článku Přehled: Vytvoření kontejneru ovládacího prvku technologie ActiveX. Informace o ukázkách MFC naleznete v tématu Ukázky MFC.
Všimněte si, že aplikaci MDI nelze vložit do sebe. Aplikaci, která je kontejnerem nebo serverem, nelze vložit do sebe, pokud se nejedná o aplikaci SDI.
Odkazy na vložené objekty
Funkce Odkazy na vložené objekty umožňuje uživateli vytvořit dokument s odkazem OLE na vložený objekt v aplikaci kontejneru. Můžete například vytvořit dokument v textovém procesoru obsahujícím vloženou tabulku. Pokud vaše aplikace podporuje odkazy na vložené objekty, může vložit odkaz na tabulku obsaženou v dokumentu textového procesoru. Tato funkce umožňuje aplikaci používat informace obsažené v tabulce, aniž by věděla, kde byl textový procesor původně uveden.
Propojení s vloženými objekty v aplikaci
Odvodit třídu dokumentu místo
COleLinkingDoc
COleDocument
.Vytvořte ID třídy OLE (CLSID) pro vaši aplikaci pomocí generátoru ID třídy, který je součástí vývojových nástrojů OLE.
Zaregistrujte aplikaci v OLE.
Vytvořte
COleTemplateServer
objekt jako člen třídy aplikace.V členské funkci třídy
InitInstance
aplikace postupujte takto:Připojení objektu
COleTemplateServer
do šablon dokumentů voláním členské funkce objektuConnectTemplate
.COleTemplateServer::RegisterAll
Volání členské funkce pro registraci všech objektů třídy v systému OLE.Zavolejte
COleTemplateServer::UpdateRegistry
. Jediný parametr, který máUpdateRegistry
být OAT_CONTAINER , pokud aplikace není spuštěna s přepínačem /Embedded. Tím se aplikace zaregistruje jako kontejner, který může podporovat odkazy na vložené objekty.Pokud se aplikace spustí s přepínačem /Embedded, nemělo by se zobrazit jeho hlavní okno, podobně jako serverová aplikace.
Ukázková knihovna MFC OLE OCLIENT implementuje tuto funkci. Příklad toho, jak se to dělá, najdete InitInstance
v OCLIENT. Soubor CPP této ukázkové aplikace