COleLinkingDoc – třída
Základní třída dokumentů kontejneru OLE, které podporují propojení s vloženými položkami, které obsahují.
Syntaxe
class COleLinkingDoc : public COleDocument
Členové
Veřejné konstruktory
Název | Popis |
---|---|
COleLinkingDoc::COleLinkingDoc | COleLinkingDoc Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
COleLinkingDoc::Register | Zaregistruje dokument pomocí knihoven DLL systému OLE. |
COleLinkingDoc::Revoke | Odvolá registraci dokumentu. |
Chráněné metody
Název | Popis |
---|---|
COleLinkingDoc::OnFindEmbeddedItem | Najde zadanou vloženou položku. |
COleLinkingDoc::OnGetLinkedItem | Vyhledá zadanou propojenou položku. |
Poznámky
Kontejnerová aplikace, která podporuje propojení s vloženými položkami, se nazývá "propojení kontejneru". Ukázková aplikace OCLIENT je příkladem kontejneru propojení.
Pokud je zdroj propojené položky vloženou položkou v jiném dokumentu, musí být tento dokument načten, aby byla vložená položka upravena. Z tohoto důvodu musí být kontejner propojení možné spustit jinou aplikací kontejneru, když chce uživatel upravit zdroj propojené položky. Vaše aplikace musí také použít COleTemplateServer třídy, aby mohl vytvářet dokumenty při spuštění programově.
Pokud chcete kontejner vytvořit jako kontejner propojení, odvozujte třídu dokumentu místo COleDocument COleLinkingDoc
. Stejně jako u jakéhokoli jiného kontejneru OLE musíte navrhnout třídu pro ukládání nativních dat aplikace i vložených nebo propojených položek. Musíte také navrhnout datové struktury pro ukládání nativních dat. Pokud definujete -odvozenou CDocItem
třídu pro nativní data vaší aplikace, můžete použít rozhraní definované COleDocument
k ukládání nativních dat i dat OLE.
Pokud chcete aplikaci spustit programově jiným kontejnerem, deklarujte COleTemplateServer
objekt jako člena -odvozené třídy vaší aplikace CWinApp
:
class COleContainerApp : public CWinApp
{
protected:
COleTemplateServer m_server;
// remainder of class declaration omitted
InitInstance
Ve členské funkci vaší CWinApp
-odvozené třídy vytvořte šablonu dokumentu a jako třídu dokumentu zadejte COleLinkingDoc
-odvozenou třídu:
// CMyLinkDoc is derived from COleLinkingDoc
CMultiDocTemplate* pDocTemplate = new CMultiDocTemplate(IDR_LINKDOCTYPE,
RUNTIME_CLASS(CMyLinkDoc),
RUNTIME_CLASS(CChildFrame),
RUNTIME_CLASS(CMyLinkView));
if (!pDocTemplate)
return FALSE;
pDocTemplate->SetContainerInfo(IDR_OLECONTTYPE_CNTR_IP);
AddDocTemplate(pDocTemplate);
Připojte objekt COleTemplateServer
k šablonám dokumentů voláním členské funkce objektu ConnectTemplate
a zaregistrujte všechny objekty třídy v systému OLE voláním COleTemplateServer::RegisterAll
:
m_server.ConnectTemplate(clsid, pDocTemplate, FALSE);
COleTemplateServer::RegisterAll();
Ukázkovou CWinApp
definici a InitInstance
funkci odvozené třídy najdete v tématu OCLIENT. H a OCLIENT. CPP v ukázkovém objektu OCLIENT mfc
Další informace o použití COleLinkingDoc
najdete v článcích Kontejnery: Implementace kontejneru a kontejnerů: Pokročilé funkce.
Hierarchie dědičnosti
COleLinkingDoc
Požadavky
Hlavička: afxole.h
COleLinkingDoc::COleLinkingDoc
COleLinkingDoc
Vytvoří objekt bez zahájení komunikace se systémovými knihovny DLL OLE.
COleLinkingDoc();
Poznámky
Chcete-li informovat ole, že je dokument otevřen, je nutné volat Register
člena funkce.
COleLinkingDoc::OnFindEmbeddedItem
Volá se rozhraním k určení, zda dokument obsahuje vloženou položku OLE se zadaným názvem.
virtual COleClientItem* OnFindEmbeddedItem(LPCTSTR lpszItemName);
Parametry
lpszItemName
Ukazatel na název požadované vložené položky OLE.
Návratová hodnota
Ukazatel na zadanou položku; HODNOTA NULL, pokud položka nebyla nalezena.
Poznámky
Výchozí implementace prohledá seznam vložených položek položky se zadaným názvem (porovnání názvů se rozlišují malá a velká písmena). Tuto funkci přepište, pokud máte vlastní metodu ukládání nebo pojmenování vložených položek OLE.
COleLinkingDoc::OnGetLinkedItem
Volá se rozhraním a kontroluje, jestli dokument obsahuje propojenou položku serveru se zadaným názvem.
virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);
Parametry
lpszItemName
Ukazatel na název požadované propojené položky OLE.
Návratová hodnota
Ukazatel na zadanou položku; HODNOTA NULL, pokud položka nebyla nalezena.
Poznámky
Výchozí COleLinkingDoc
implementace vždy vrátí hodnotu NULL. Tato funkce je přepsána v odvozené třídě COleServerDoc
, aby se v seznamu položek serveru OLE vyhledaly propojené položky se zadaným názvem (porovnání názvů se rozlišují malá a velká písmena). Tuto funkci přepište, pokud jste implementovali vlastní metodu ukládání nebo načítání propojených položek serveru.
COleLinkingDoc::Register
Informuje knihovny DLL systému OLE, že je dokument otevřen.
BOOL Register(
COleObjectFactory* pFactory,
LPCTSTR lpszPathName);
Parametry
pFactory
Ukazatel na objekt objektu továrny OLE (může mít hodnotu NULL).
lpszPathName
Ukazatel na plně kvalifikovanou cestu k dokumentu kontejneru.
Návratová hodnota
Nenulové, pokud je dokument úspěšně zaregistrován; jinak 0.
Poznámky
Volání této funkce při vytváření nebo otevření pojmenovaného souboru pro registraci dokumentu v knihovnách DLL systému OLE. Pokud dokument představuje vloženou položku, není nutné tuto funkci volat.
Pokud ve své aplikaci používáte COleTemplateServer
, Register
volá se pro vás COleLinkingDoc
implementace OnNewDocument
, OnOpenDocument
a OnSaveDocument
.
COleLinkingDoc::Revoke
Informuje systémové knihovny DLL OLE, že dokument již není otevřen.
void Revoke();
Poznámky
Voláním této funkce odvoláte registraci dokumentu pomocí systémových knihoven DLL OLE.
Tuto funkci byste měli volat při zavírání pojmenovaného souboru, ale obvykle ji nemusíte volat přímo. Revoke
je pro vás volána implementací COleLinkingDoc
OnCloseDocument
, OnNewDocument
, OnOpenDocument
, a OnSaveDocument
.
Viz také
MFC – ukázka OCLIENT
COleDocument – třída
Graf hierarchie
CDocTemplate – třída