Kontejnery: Implementace kontejneru
Tento článek shrnuje postup implementace kontejneru a odkazuje vás na další články, které poskytují podrobnější vysvětlení implementace kontejnerů. Obsahuje také některé volitelné funkce OLE, které můžete chtít implementovat, a články popisující tyto funkce.
Příprava třídy odvozené od CWinApp
Inicializace knihoven OLE voláním
AfxOleInit
InitInstance
členské funkce.InitInstance
Voláním přiřaďteCDocTemplate::SetContainerInfo
prostředky nabídky a akcelerátoru používané při aktivaci vložené položky na místě. Další informace o tomto tématu najdete v tématu Aktivace.
Tyto funkce jsou poskytovány automaticky při použití Průvodce aplikací MFC k vytvoření aplikace kontejneru. Viz Vytvoření programu MFC EXE.
Příprava třídy zobrazení
Udržujte přehled o vybraných položkách udržováním ukazatele nebo seznamu ukazatelů, pokud podporujete vícenásobný výběr vybraných položek. Funkce
OnDraw
musí nakreslit všechny položky OLE.Přepsáním
IsSelected
zkontrolujete, jestli je položka předaná aktuálně vybraná.Implementujte obslužnou rutinu
OnInsertObject
zprávy pro zobrazení dialogového okna Vložit objekt .Implementujte obslužnou rutinu
OnSetFocus
zprávy pro přenos fokusu ze zobrazení na místní aktivní vloženou položku OLE.Implementujte obslužnou rutinu
OnSize
zprávy, která informuje vloženou položku OLE, že potřebuje změnit jeho obdélník tak, aby odrážel změnu velikosti jeho obsahujícího zobrazení.
Vzhledem k tomu, že implementace těchto funkcí se výrazně liší od jedné aplikace po druhou, průvodce aplikací poskytuje pouze základní implementaci. Tyto funkce budete pravděpodobně muset přizpůsobit, aby vaše aplikace fungovala správně. Příklad najdete v ukázce CONTAINER .
Zpracování vložených a propojených položek
Odvození třídy z COleClientItem. Objekty této třídy představují položky, které byly vloženy nebo propojeny s dokumentem OLE.
Přepsání
OnChange
,OnChangeItemPosition
aOnGetItemPosition
. Tyto funkce zpracovávají změnu velikosti, umístění a úpravy vložených a propojených položek.
Průvodce aplikací odvodí třídu za vás, ale pravděpodobně budete muset přepsat OnChange
a ostatní funkce uvedené s ním v kroku 2 v předchozím postupu. Kostru implementace je potřeba přizpůsobit pro většinu aplikací, protože tyto funkce jsou implementovány odlišně od jedné aplikace do další. Příklady najdete v ukázkách MFC DRAWCLI a CONTAINER.
Chcete-li podporovat OLE, je nutné do struktury nabídek aplikace kontejneru přidat několik položek. Další informace o těchto tématech najdete v tématu Nabídky a prostředky: Doplňky kontejnerů.
Můžete také chtít podporovat některé z následujících funkcí v kontejnerové aplikaci:
Místní aktivace při úpravě vložené položky
Další informace najdete v tématu Aktivace.
Vytváření položek OLE přetažením výběru ze serverové aplikace
Další informace naleznete v tématu OLE přetažení.
Odkazy na vložené objekty nebo kombinované aplikace typu kontejner/server.
Další informace naleznete v tématu Kontejnery: Pokročilé funkce.