Sdílet prostřednictvím


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 COleDocumentzákladní třída třídy dokumentu , změňte základní třídu na COleServerDoc.

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

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.

  1. Odvodit třídu dokumentu místo COleLinkingDocCOleDocument.

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

  3. Zaregistrujte aplikaci v OLE.

  4. Vytvořte COleTemplateServer objekt jako člen třídy aplikace.

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

Viz také

Kontejnery
Servery