COleServerDoc – třída
Základní třída dokumentů serveru OLE.
Syntaxe
class AFX_NOVTABLE COleServerDoc : public COleLinkingDoc
Členové
Veřejné konstruktory
Název | Popis |
---|---|
COleServerDoc::COleServerDoc | COleServerDoc Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
COleServerDoc::ActivateDocObject | Aktivuje přidružený dokument DocObject. |
COleServerDoc::ActivateInPlace | Aktivuje dokument pro místní úpravy. |
COleServerDoc::D eactivateAndUndo | Deaktivuje uživatelské rozhraní serveru. |
COleServerDoc::D iscardUndoState | Zahodí informace o stavu zpět. |
COleServerDoc::GetClientSite | Načte ukazatel na základní IOleClientSite rozhraní. |
COleServerDoc::GetEmbeddedItem | Vrátí ukazatel na položku představující celý dokument. |
COleServerDoc::GetItemClipRect | Vrátí aktuální obdélník výřezu pro místní úpravy. |
COleServerDoc::GetItemPosition | Vrátí obdélník aktuální pozice vzhledem k klientské oblasti aplikace kontejneru pro místní úpravy. |
COleServerDoc::GetZoomFactor | Vrátí faktor přiblížení v pixelech. |
COleServerDoc::IsDocObject | Určuje, jestli je dokument objektem DocObject. |
COleServerDoc::IsEmbedded | Určuje, jestli je dokument vložený do dokumentu kontejneru nebo jestli je spuštěný samostatně. |
COleServerDoc::IsInPlaceActive | Vrátí hodnotu TRUE, pokud je položka aktuálně aktivována. |
COleServerDoc::NotifyChanged | Upozorní kontejnery, že uživatel změnil dokument. |
COleServerDoc::NotifyClosed | Upozorní kontejnery, že uživatel dokument zavřel. |
COleServerDoc::NotifyRename | Upozorní kontejnery, že uživatel dokument přejmenoval. |
COleServerDoc::NotifySaved | Upozorní kontejnery, že uživatel dokument uložil. |
COleServerDoc::OnDeactivate | Volá se rozhraním, když uživatel deaktivuje položku, která byla aktivována na místě. |
COleServerDoc::OnDeactivateUI | Volal rozhraní k zničení ovládacích prvků a dalších prvků uživatelského rozhraní vytvořených pro místní aktivaci. |
COleServerDoc::OnDocWindowActivate | Volá se rozhraním při aktivaci nebo deaktivaci okna rámečku dokumentu kontejneru. |
COleServerDoc::OnResizeBorder | Volá se rozhraním, když se změní velikost okna rámce aplikace kontejneru nebo okna dokumentu. |
COleServerDoc::OnShowControlBars | Volal rozhraní pro zobrazení nebo skrytí ovládacích pruhů pro místní úpravy. |
COleServerDoc::OnUpdateDocument | Volané rozhraním při uložení dokumentu serveru, který je vloženou položkou, aktualizace kopie kontejneru položky. |
COleServerDoc::RequestPositionChange | Změní umístění místního rámečku pro úpravy. |
COleServerDoc::SaveEmbedding | Řekne aplikaci kontejneru, aby dokument uložila. |
COleServerDoc::ScrollContainerBy | Posune dokument kontejneru. |
COleServerDoc::UpdateAllItems | Upozorní kontejnery, že uživatel změnil dokument. |
Chráněné metody
Název | Popis |
---|---|
COleServerDoc::CreateInPlaceFrame | Volá se rozhraním pro vytvoření okna rámečku pro místní úpravy. |
COleServerDoc::D estroyInPlaceFrame | Volá se rozhraním pro zničení okna rámce pro místní úpravy. |
COleServerDoc::GetDocObjectServer | Přepište tuto funkci, aby se vytvořil nový CDocObjectServer objekt, a indikuje, že tento dokument je kontejner DocObject. |
COleServerDoc::OnClose | Volá se rozhraním, když kontejner požádá o zavření dokumentu. |
COleServerDoc::OnExecOleCmd | Spustí zadaný příkaz nebo zobrazí nápovědu k příkazu. |
COleServerDoc::OnFrameWindowActivate | Volá se rozhraním při aktivaci nebo deaktivaci okna rámečku kontejneru. |
COleServerDoc::OnGetEmbeddedItem | Volá se k získání COleServerItem celého dokumentu, který slouží k získání vložené položky. Vyžaduje se implementace. |
COleServerDoc::OnReactivateAndUndo | Volá se rozhraním pro vrácení změn provedených během místních úprav. |
COleServerDoc::OnSetHostNames | Volá se rozhraním, když kontejner nastaví název okna pro vložený objekt. |
COleServerDoc::OnSetItemRects | Volá se rozhraním pro umístění místního okna rámečku pro úpravy v okně aplikace kontejneru. |
COleServerDoc::OnShowDocument | Volá se rozhraním k zobrazení nebo skrytí dokumentu. |
Poznámky
Dokument serveru může obsahovat objekty COleServerItem , které představují rozhraní serveru pro vložené nebo propojené položky. Když je serverová aplikace spuštěna kontejnerem pro úpravu vložené položky, položka se načte jako vlastní serverový dokument; COleServerDoc
objekt obsahuje pouze jeden COleServerItem
objekt, který se skládá z celého dokumentu. Když kontejner spustí serverovou aplikaci pro úpravu propojené položky, načte se existující dokument z disku; Zvýrazněná část obsahu dokumentu označuje propojenou položku.
COleServerDoc
objekty mohou také obsahovat položky COleClientItem třídy. To vám umožní vytvářet aplikace typu kontejner-server. Architektura poskytuje funkce pro správné ukládání COleClientItem
položek při údržbě COleServerItem
objektů.
Pokud serverová aplikace nepodporuje odkazy, dokument serveru bude vždy obsahovat pouze jednu položku serveru, která představuje celý vložený objekt jako dokument. Pokud serverová aplikace podporuje odkazy, musí vytvořit položku serveru při každém zkopírování výběru do schránky.
Chcete-li použít COleServerDoc
, odvození třídy z něj a implementace OnGetEmbeddedItem členské funkce, která umožňuje serveru podporovat vložené položky. Odvození třídy od COleServerItem
implementace položek v dokumentech a vrácení objektů této třídy z OnGetEmbeddedItem
.
Pro podporu propojených položek COleServerDoc
poskytuje členské funkce OnGetLinkedItem . Výchozí implementaci můžete použít nebo ji přepsat, pokud máte vlastní způsob správy položek dokumentu.
Pro každý typ serveru, který vaše aplikace podporuje, potřebujete jednu COleServerDoc
odvozenou třídu. Pokud například serverová aplikace podporuje listy a grafy, potřebujete dvě COleServerDoc
odvozené třídy.
Další informace o serverech najdete v článku Servery: Implementace serveru.
Hierarchie dědičnosti
COleServerDoc
Požadavky
Hlavička: afxole.h
COleServerDoc::ActivateDocObject
Aktivuje přidružený dokument DocObject.
void ActivateDocObject();
Poznámky
Ve výchozím nastavení COleServerDoc
nepodporuje aktivní dokumenty (označované také jako DocObjects). Pokud chcete tuto podporu povolit, přečtěte si téma GetDocObjectServer a třída CDocObjectServer.
COleServerDoc::ActivateInPlace
Aktivuje položku pro místní úpravy.
BOOL ActivateInPlace();
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0, což znamená, že položka je plně otevřená.
Poznámky
Tato funkce provádí všechny operace nezbytné pro místní aktivaci. Vytvoří místní okno rámečku, aktivuje ho a změní jeho velikost na položku, nastaví sdílené nabídky a další ovládací prvky, posune položku do zobrazení a nastaví fokus na místní okno rámečku.
Tato funkce je volána výchozí implementací COleServerItem::OnShow. Tuto funkci zavolejte, pokud vaše aplikace podporuje další příkaz pro místní aktivaci (například Play).
COleServerDoc::COleServerDoc
COleServerDoc
Vytvoří objekt bez připojení k systémovým knihovnám DLL OLE.
COleServerDoc();
Poznámky
Chcete-li otevřít komunikaci s ole, musíte volat COleLinkingDoc::Register . Pokud ve své aplikaci používáte COleTemplateServer, COleLinkingDoc::Register
volá se pro vás COleLinkingDoc
implementace OnNewDocument
, OnOpenDocument
a OnSaveDocument
.
COleServerDoc::CreateInPlaceFrame
Architektura volá tuto funkci k vytvoření okna rámce pro místní úpravy.
virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);
Parametry
pParentWnd
Ukazatel na nadřazené okno aplikace kontejneru
Návratová hodnota
Ukazatel na místní okno rámečku nebo null v případě neúspěchu.
Poznámky
Výchozí implementace používá k vytvoření rámce informace zadané v šabloně dokumentu. Použité zobrazení je první zobrazení vytvořené pro dokument. Toto zobrazení je dočasně odpojeno od původního rámce a připojeno k nově vytvořenému rámečku.
Jedná se o pokročilý přepis.
COleServerDoc::D eactivateAndUndo
Tuto funkci zavolejte, pokud vaše aplikace podporuje funkci Zpět a uživatel zvolí možnost Zpět po aktivaci položky, ale před úpravou.
BOOL DeactivateAndUndo();
Návratová hodnota
Nenulové při úspěchu; jinak 0.
Poznámky
Pokud je aplikace kontejneru zapsána pomocí knihovny tříd Microsoft Foundation, volání této funkce způsobí volání COleClientItem::OnDeactivateAndUndo , které deaktivuje uživatelské rozhraní serveru.
COleServerDoc::D estroyInPlaceFrame
Architektura volá tuto funkci, aby zničila místní okno rámce a vrátila okno dokumentu serverové aplikace do stavu před místní aktivací.
virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);
Parametry
pFrameWnd
Ukazatel na místní okno rámečku, které se má zničit.
Poznámky
Jedná se o pokročilý přepis.
COleServerDoc::D iscardUndoState
Pokud uživatel provede operaci úprav, kterou nelze vrátit zpět, zavolejte tuto funkci, aby aplikace kontejneru zahodila informace o stavu vrácení zpět.
BOOL DiscardUndoState();
Návratová hodnota
Nenulové při úspěchu; jinak 0.
Poznámky
Tato funkce je poskytována tak, aby servery, které podporují funkci Zpět, mohly uvolnit prostředky, které by jinak byly využity informacemi o stavu zpět, které nelze použít.
COleServerDoc::GetClientSite
Načte ukazatel na základní IOleClientSite
rozhraní.
LPOLECLIENTSITE GetClientSite() const;
Návratová hodnota
Načte ukazatel na základní rozhraní IOleClientSite .
COleServerDoc::GetDocObjectServer
Přepište tuto funkci tak, aby vytvořila novou CDocObjectServer
položku a vrátila na ni ukazatel.
virtual CDocObjectServer* GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite);
Parametry
pDocSite
Ukazatel na IOleDocumentSite
rozhraní, které připojí tento dokument k serveru.
Návratová hodnota
Ukazatel na CDocObjectServer
; Hodnota NULL, pokud operace selhala.
Poznámky
Když je server DocObject aktivován, návrat ukazatele bez hodnoty NULL ukazuje, že klient může podporovat DocObjects. Výchozí implementace vrátí hodnotu NULL.
Typická implementace dokumentu, který podporuje DocObjects, jednoduše přidělí nový CDocObjectServer
objekt a vrátí ho volajícímu. Příklad:
CDocObjectServer* CMFCOleServerDoc::GetDocObjectServer(LPOLEDOCUMENTSITE pSite)
{
return new CDocObjectServer(this, pSite);
}
COleServerDoc::GetEmbeddedItem
Voláním této funkce získáte ukazatel na položku představující celý dokument.
COleServerItem* GetEmbeddedItem();
Návratová hodnota
Ukazatel na položku představující celý dokument; Hodnota NULL, pokud operace selhala.
Poznámky
Volá COleServerDoc::OnGetEmbeddedItem, virtuální funkci bez výchozí implementace.
COleServerDoc::GetItemClipRect
Voláním GetItemClipRect
členské funkce získáte souřadnice obdélníku výřezu položky, kterou upravujete na místě.
void GetItemClipRect(LPRECT lpClipRect) const;
Parametry
lpClipRect
Ukazatel na strukturu nebo CRect
objekt pro RECT
příjem souřadnic obdélníku výřezu položky.
Poznámky
Souřadnice jsou v pixelech vzhledem k klientské oblasti okna aplikace kontejneru.
Výkres by neměl nastat mimo obdélník výřezu. Výkres je obvykle automaticky omezen. Tato funkce slouží k určení, zda se uživatel posunoval mimo viditelnou část dokumentu; pokud ano, posuňte dokument kontejneru podle potřeby voláním ScrollContainerBy.
COleServerDoc::GetItemPosition
Voláním GetItemPosition
členské funkce získáte souřadnice položky, kterou upravujete.
void GetItemPosition(LPRECT lpPosRect) const;
Parametry
lpPosRect
Ukazatel na RECT
strukturu nebo CRect
objekt pro příjem souřadnic položky.
Poznámky
Souřadnice jsou v pixelech vzhledem k klientské oblasti okna aplikace kontejneru.
Umístění položky lze porovnat s aktuálním obdélníkem výřezu a určit rozsah, ve kterém je položka viditelná (nebo není viditelná) na obrazovce.
COleServerDoc::GetZoomFactor
Členová GetZoomFactor
funkce určuje "faktor přiblížení" položky, která byla aktivována pro místní úpravy.
BOOL GetZoomFactor(
LPSIZE lpSizeNum = NULL,
LPSIZE lpSizeDenom = NULL,
LPCRECT lpPosRect = NULL) const;
Parametry
lpSizeNum
Ukazatel na objekt třídy CSize
, který bude obsahovat čitatel lupy. Může mít hodnotu NULL.
lpSizeDenom
Ukazatel na objekt třídy CSize
, který bude obsahovat jmenovatel faktoru lupy. Může mít hodnotu NULL.
lpPosRect
Ukazatel na objekt třídy CRect
, který popisuje nové umístění položky. Pokud je tento argument NULL, funkce použije aktuální pozici položky.
Návratová hodnota
Nenulové, pokud je položka aktivována pro místní úpravy a její faktor přiblížení je jiný než 100 % (1:1); jinak 0.
Poznámky
Faktor přiblížení v pixelech je poměr velikosti položky v aktuálním rozsahu. Pokud aplikace kontejneru nenastavila rozsah položky, použije se její přirozený rozsah (určený COleServerItem::OnGetExtent).
Funkce nastaví první dva argumenty na čitatel a jmenovatel "zoom factor" položky. Pokud se položka neupravuje, funkce nastaví tyto argumenty na výchozí hodnotu 100 % (nebo 1:1) a vrátí nulu. Další informace naleznete v technické poznámce 40, MFC/OLE místní změny velikosti a přiblížení.
COleServerDoc::IsDocObject
Určuje, jestli je dokument objektem DocObject.
BOOL IsDocObject() const;
Návratová hodnota
TRUE, pokud dokument je DocObject; jinak NEPRAVDA.
COleServerDoc::IsEmbedded
Voláním IsEmbedded
členské funkce určíte, zda dokument představuje objekt vložený do kontejneru.
BOOL IsEmbedded() const;
Návratová hodnota
Nenulové, pokud COleServerDoc
je objekt dokument, který představuje objekt vložený do kontejneru; jinak 0.
Poznámky
Dokument načtený ze souboru není vložený, i když může být manipulován aplikací kontejneru jako s odkazem. Dokument vložený do dokumentu kontejneru se považuje za vložený.
COleServerDoc::IsInPlaceActive
Voláním IsInPlaceActive
členské funkce určíte, jestli je položka aktuálně v aktivním stavu.
BOOL IsInPlaceActive() const;
Návratová hodnota
Nenulové, pokud COleServerDoc
je objekt aktivní, jinak 0.
COleServerDoc::NotifyChanged
Voláním této funkce upozorněte všechny propojené položky připojené k dokumentu, že se dokument změnil.
void NotifyChanged();
Poznámky
Tuto funkci obvykle zavoláte poté, co uživatel změní některé globální atributy, jako jsou dimenze dokumentu serveru. Pokud je položka OLE propojena s dokumentem s automatickým propojením, položka se aktualizuje tak, aby odrážela změny. V kontejnerových aplikacích napsaných pomocí knihovny tříd Microsoft Foundation je volána členská COleClientItem
funkce OnChange.
Poznámka:
Tato funkce je součástí kompatibility s OLE 1. Nové aplikace by měly používat UpdateAllItems.
COleServerDoc::NotifyClosed
Voláním této funkce upozorněte kontejnery, že byl dokument zavřený.
void NotifyClosed();
Poznámky
Když uživatel zvolí příkaz Zavřít z nabídky Soubor, NotifyClosed
zavolá se implementací COleServerDoc
členské funkce OnCloseDocument. V kontejnerových aplikacích napsaných pomocí knihovny tříd Microsoft Foundation je volána členská COleClientItem
funkce OnChange.
COleServerDoc::NotifyRename
Volání této funkce po přejmenování dokumentu serveru uživatelem.
void NotifyRename(LPCTSTR lpszNewName);
Parametry
lpszNewName
Ukazatel na řetězec určující nový název dokumentu serveru; to je obvykle plně kvalifikovaná cesta.
Poznámky
Když uživatel zvolí příkaz Uložit jako z nabídky Soubor, NotifyRename
zavolá COleServerDoc
se implementací členské funkce OnSaveDocument . Tato funkce upozorní knihovny DLL systému OLE, které následně upozorňují kontejnery. V kontejnerových aplikacích napsaných pomocí knihovny tříd Microsoft Foundation je volána členská COleClientItem
funkce OnChange.
COleServerDoc::NotifySaved
Volání této funkce po uložení dokumentu serveru uživatelem.
void NotifySaved();
Poznámky
Když uživatel zvolí příkaz Uložit z nabídky Soubor, NotifySaved
je volána za vás implementací COleServerDoc
OnSaveDocument. Tato funkce upozorní knihovny DLL systému OLE, které následně upozorňují kontejnery. V kontejnerových aplikacích napsaných pomocí knihovny tříd Microsoft Foundation je volána členská COleClientItem
funkce OnChange.
COleServerDoc::OnClose
Volá se rozhraním, když kontejner požaduje, aby byl dokument serveru zavřený.
virtual void OnClose(OLECLOSE dwCloseOption);
Parametry
dwCloseOption
Hodnota z výčtu OLECLOSE. Tento parametr může mít jednu z následujících hodnot:
OLECLOSE_SAVEIFDIRTY Soubor se uloží, pokud byl změněn.
OLECLOSE_NOSAVE Soubor je zavřený bez uložení.
OLECLOSE_PROMPTSAVE Pokud byl soubor změněn, zobrazí se uživateli výzva k jeho uložení.
Poznámky
Výchozí volání CDocument::OnCloseDocument
implementace .
Další informace a další hodnoty naleznete v tématu OLECLOSE v sadě Windows SDK.
COleServerDoc::OnDeactivate
Volá se rozhraním, když uživatel deaktivuje vloženou nebo propojenou položku, která je aktuálně aktivní.
virtual void OnDeactivate();
Poznámky
Tato funkce obnoví uživatelské rozhraní aplikace kontejneru do původního stavu a zničí všechny nabídky a další ovládací prvky vytvořené pro místní aktivaci.
Informace o stavu vrácení zpět by měly být v tuto chvíli bezpodmínečně uvolněny.
Další informace najdete v článku Aktivace..
COleServerDoc::OnDeactivateUI
Volá se, když uživatel deaktivuje aktivovanou položku.
virtual void OnDeactivateUI(BOOL bUndoable);
Parametry
bUndoable
Určuje, jestli se změny úprav dají vrátit zpět.
Poznámky
Tato funkce obnoví uživatelské rozhraní aplikace kontejneru do původního stavu, skryje všechny nabídky a další ovládací prvky vytvořené pro místní aktivaci.
Architektura vždy nastaví hodnotu bUndoable na FALSE. Pokud server podporuje vrácení zpět a existuje operace, která se dá vrátit zpět, zavolejte implementaci základní třídy s bUndoable nastavenou na TRUE.
COleServerDoc::OnDocWindowActivate
Architektura volá tuto funkci k aktivaci nebo deaktivaci okna dokumentu pro místní úpravy.
virtual void OnDocWindowActivate(BOOL bActivate);
Parametry
bActivate
Určuje, jestli se má okno dokumentu aktivovat nebo deaktivovat.
Poznámky
Výchozí implementace podle potřeby odebere nebo přidá prvky uživatelského rozhraní na úrovni rámce. Tuto funkci přepište, pokud chcete provést další akce při aktivaci nebo deaktivaci dokumentu obsahujícího položku.
Další informace najdete v článku Aktivace..
COleServerDoc::OnExecOleCmd
Architektura volá tuto funkci, aby spustila zadaný příkaz nebo zobrazila nápovědu k příkazu.
virtual HRESULT OnExecOleCmd(
const GUID* pguidCmdGroup,
DWORD nCmdID,
DWORD nCmdExecOpt,
VARIANTARG* pvarargIn,
VARIANTARG* pvarargOut);
Parametry
pguidCmdGroup
Ukazatel na identifikátor GUID, který identifikuje sadu příkazů. Může mít hodnotu NULL, která označuje výchozí skupinu příkazů.
nCmdID
Příkaz, který se má provést. Musí být ve skupině identifikované pguidCmdGroup.
nCmdExecOut
Způsob, jakým by měl objekt spustit příkaz, jednu nebo více následujících hodnot z výčtu OLECMDEXECOPT:
OLECMDEXECOPT_DODEFAULT
OLECMDEXECOPT_PROMPTUSER
OLECMDEXECOPT_DONTPROMPTUSER
OLECMDEXECOPT_SHOWHELP
pvarargIn
Ukazatel na VARIANTARG obsahující vstupní argumenty pro příkaz. Může mít hodnotu NULL.
pvarargOut
Ukazatel na VARIANTARG pro příjem výstupních návratových hodnot z příkazu. Může mít hodnotu NULL.
Návratová hodnota
Vrátí S_OK v případě úspěchu; v opačném případě jeden z následujících kódů chyb:
Hodnota | Popis |
---|---|
E_UNEXPECTED | Došlo k neočekávané chybě. |
E_FAIL | Něco se pokazilo |
E_NOTIMPL | Označuje, že se samotný mfc má pokusit příkaz přeložit a odeslat. |
OLECMDERR_E_UNKNOWNGROUP | pguidCmdGroup není null, ale nezadá rozpoznanou skupinu příkazů. |
OLECMDERR_E_NOTSUPPORTED | nCmdID není rozpoznán jako platný příkaz ve skupině pguidCmdGroup |
OLECMDERR_DISABLED | Příkaz identifikovaný pomocí nCmdID je zakázaný a nelze ho spustit. |
OLECMDERR_NOHELP | Volající požádal o pomoc s příkazem identifikovaným pomocí nCmdID , ale není k dispozici žádná nápověda. |
OLECMDERR_CANCELED | Uživatel zrušil provádění. |
Poznámky
COleCmdUI
lze použít k povolení, aktualizaci a nastavení dalších vlastností příkazů uživatelského rozhraní DocObject. Po inicializaci příkazů je můžete spustit pomocí OnExecOleCmd
příkazu .
Architektura volá funkci před pokusem o překlad a odeslání příkazu dokumentu OLE. Tuto funkci nemusíte přepsat, aby zpracovávala standardní příkazy dokumentu OLE, ale pokud chcete zpracovat vlastní příkazy nebo zpracovat příkazy, které přijímají parametry nebo vrací výsledky, musíte této funkci zadat přepsání.
Většina příkazů nepřebírají argumenty ani návratové hodnoty. Pro většinu příkazů může volající předat NULLs pro pvarargIn a pvarargOut. Pro příkazy, které očekávají vstupní hodnoty, volající může deklarovat a inicializovat proměnnou VARIANTARG a předat ukazatel na proměnnou v pvarargIn. Pro příkazy, které vyžadují jednu hodnotu, lze argument uložit přímo v VARIANTARG a předat funkci. V rámci VARIANTARG musí být zabaleno více argumentů pomocí jednoho z podporovaných typů (například IDispatch
SAFEARRAY).
Podobně pokud příkaz vrátí argumenty, které volající má deklarovat VARIANTARG, inicializovat ji do VT_EMPTY a předat její adresu v pvarargOut. Pokud příkaz vrátí jednu hodnotu, objekt může tuto hodnotu uložit přímo v pvarargOut. Více výstupních hodnot musí být zabaleno nějakým způsobem odpovídajícím způsobem pro VARIANTARG.
Implementace této funkce základní třídy provede OLE_COMMAND_MAP struktury přidružené k cíli příkazu a pokusí se odeslat příkaz do příslušné obslužné rutiny. Implementace základní třídy funguje pouze s příkazy, které nepřijímají argumenty nebo návratové hodnoty. Pokud potřebujete zpracovat příkazy, které přijímají argumenty nebo návratové hodnoty, musíte tuto funkci přepsat a pracovat s parametry pvarargIn a pvarargOut sami.
COleServerDoc::OnFrameWindowActivate
Architektura volá tuto funkci při aktivaci nebo deaktivaci okna rámce aplikace kontejneru.
virtual void OnFrameWindowActivate(BOOL bActivate);
Parametry
bActivate
Určuje, jestli má být okno rámečku aktivováno nebo deaktivováno.
Poznámky
Výchozí implementace zruší všechny režimy nápovědy, ve které může být okno rámečku. Tuto funkci přepište, pokud chcete provést speciální zpracování při aktivaci nebo deaktivaci okna rámečku.
Další informace najdete v článku Aktivace..
COleServerDoc::OnGetEmbeddedItem
Volá se rozhraním, když aplikace kontejneru volá serverovou aplikaci k vytvoření nebo úpravě vložené položky.
virtual COleServerItem* OnGetEmbeddedItem() = 0;
Návratová hodnota
Ukazatel na položku představující celý dokument; Hodnota NULL, pokud operace selhala.
Poznámky
Neexistuje žádná výchozí implementace. Chcete-li vrátit položku představující celý dokument, musíte tuto funkci přepsat. Tato návratová hodnota by měla být objektem COleServerItem
-odvozené třídy.
COleServerDoc::OnReactivateAndUndo
Architektura volá tuto funkci, když se uživatel rozhodne vrátit změny provedené u položky, která byla aktivována, změněna a následně deaktivována.
virtual BOOL OnReactivateAndUndo();
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Výchozí implementace nedělá nic kromě vrácení NEPRAVDA k označení selhání.
Tuto funkci přepište, pokud vaše aplikace podporuje vrácení zpět. Obvykle byste provedli operaci vrácení zpět a pak aktivovali položku voláním ActivateInPlace
. Pokud je aplikace kontejneru napsaná pomocí knihovny tříd Microsoft Foundation, volání COleClientItem::ReactivateAndUndo
způsobí volání této funkce.
COleServerDoc::OnResizeBorder
Architektura volá tuto funkci při změně velikosti oken rámce aplikace kontejneru.
virtual void OnResizeBorder(
LPCRECT lpRectBorder,
LPOLEINPLACEUIWINDOW lpUIWindow,
BOOL bFrame);
Parametry
lpRectBorder
Ukazatel na RECT
strukturu nebo CRect
objekt, který určuje souřadnice ohraničení.
lpUIWindow
Ukazatel na objekt třídy IOleInPlaceUIWindow
, který vlastní aktuální místní relaci úprav.
bFrame
TRUE, pokud lpUIWindow odkazuje na okno rámce nejvyšší úrovně aplikace kontejneru nebo NEPRAVDA, pokud lpUIWindow odkazuje na okno rámce na úrovni dokumentu aplikace kontejneru.
Poznámky
Tato funkce mění velikost a upravuje panely nástrojů a další prvky uživatelského rozhraní v souladu s novou velikostí okna.
Další informace naleznete v tématu IOleInPlaceUIWindow v sadě Windows SDK.
Jedná se o pokročilý přepis.
COleServerDoc::OnSetHostNames
Volá se rozhraním, když kontejner nastaví nebo změní názvy hostitelů pro tento dokument.
virtual void OnSetHostNames(
LPCTSTR lpszHost,
LPCTSTR lpszHostObj);
Parametry
lpszHost
Ukazatel na řetězec, který určuje název aplikace kontejneru.
lpszHostObj
Ukazatel na řetězec, který určuje název kontejneru dokumentu.
Poznámky
Výchozí implementace změní název dokumentu pro všechna zobrazení odkazující na tento dokument.
Tuto funkci přepište, pokud vaše aplikace nastaví názvy prostřednictvím jiného mechanismu.
COleServerDoc::OnSetItemRects
Architektura volá tuto funkci k umístění místního okna rámečku pro úpravy v okně rámce aplikace kontejneru.
virtual void OnSetItemRects(
LPCRECT lpPosRect,
LPCRECT lpClipRect);
Parametry
lpPosRect
Ukazatel na RECT
strukturu nebo CRect
objekt, který určuje umístění místního okna rámce vzhledem k oblasti klienta aplikace kontejneru.
lpClipRect
Ukazatel na RECT
strukturu nebo CRect
objekt, který určuje obdélník výřezu okna v místě vzhledem k klientské oblasti aplikace kontejneru.
Poznámky
Tuto funkci přepište, aby se v případě potřeby aktualizoval faktor přiblížení zobrazení.
Tato funkce se obvykle volá v reakci na RequestPositionChange
volání, i když je možné ji kdykoli volat kontejnerem a požádat o změnu pozice pro místní položku.
COleServerDoc::OnShowControlBars
Architektura volá tuto funkci k zobrazení nebo skrytí řídicích pruhů serverové aplikace přidružené k oknem rámce identifikovaného pFrameWnd.
virtual void OnShowControlBars(
CFrameWnd* pFrameWnd,
BOOL bShow);
Parametry
pFrameWnd
Ukazatel myši na okno rámečku, jehož ovládací panely by měly být skryté nebo zobrazené.
BShow
Určuje, zda jsou řídicí pruhy zobrazeny nebo skryté.
Poznámky
Výchozí implementace vytvoří výčet všech řídicích pruhů vlastněných tímto oknem rámečku a skryje je nebo zobrazí.
COleServerDoc::OnShowDocument
Architektura volá OnShowDocument
funkci, když musí být dokument serveru skrytý nebo zobrazený.
virtual void OnShowDocument(BOOL bShow);
Parametry
BShow
Určuje, zda má být uživatelské rozhraní dokumentu zobrazeno nebo skryto.
Poznámky
Pokud bShow je PRAVDA, výchozí implementace aktivuje serverovou aplikaci v případě potřeby a způsobí, že se aplikace kontejneru posune v okně, aby byla položka viditelná. Pokud bShow je FALSE, výchozí implementace deaktivuje položku prostřednictvím volání OnDeactivate
, pak zničí nebo skryje všechna okna rámečku, která byla vytvořena pro dokument, s výjimkou první. Pokud žádné viditelné dokumenty nezůstanou, výchozí implementace skryje serverové aplikace.
COleServerDoc::OnUpdateDocument
Volá se rozhraním při ukládání dokumentu, který je vloženou položkou ve složeném dokumentu.
virtual BOOL OnUpdateDocument();
Návratová hodnota
Nenulové, pokud byl dokument úspěšně aktualizován; jinak 0.
Poznámky
Výchozí implementace volá členské funkce COleServerDoc::NotifySaved a COleServerDoc::SaveEmbedding členské funkce a pak označí dokument jako čistý. Tuto funkci přepište, pokud chcete provést speciální zpracování při aktualizaci vložené položky.
COleServerDoc::RequestPositionChange
Zavolejte tuto členskou funkci, aby aplikace kontejneru změnila pozici položky.
void RequestPositionChange(LPCRECT lpPosRect);
Parametry
lpPosRect
Ukazatel na RECT
strukturu nebo CRect
objekt obsahující novou pozici položky
Poznámky
Tato funkce se obvykle volá (ve spojení s UpdateAllItems
) při změně dat v místní aktivní položce. Po tomto volání může kontejner provést změnu voláním OnSetItemRects
. Výsledná pozice se může lišit od požadované pozice.
COleServerDoc::SaveEmbedding
Voláním této funkce sdělíte aplikaci kontejneru, aby uložila vložený objekt.
void SaveEmbedding();
Poznámky
Tato funkce se volá automaticky z OnUpdateDocument
. Všimněte si, že tato funkce způsobí aktualizaci položky na disku, takže je obvykle volána pouze v důsledku konkrétní akce uživatele.
COleServerDoc::ScrollContainerBy
ScrollContainerBy
Volání členské funkce pro posouvání dokumentu kontejneru o množství v pixelech označených .sizeScroll
BOOL ScrollContainerBy(CSize sizeScroll);
Parametry
sizeScroll
Určuje, jak daleko se má dokument kontejneru posunout.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Kladné hodnoty označují posouvání dolů a doprava; záporné hodnoty označují posouvání nahoru a doleva.
COleServerDoc::UpdateAllItems
Voláním této funkce upozorněte všechny propojené položky připojené k dokumentu, že se dokument změnil.
void UpdateAllItems(
COleServerItem* pSender,
LPARAM lHint = 0L,
CObject* pHint = NULL,
DVASPECT nDrawAspect = DVASPECT_CONTENT);
Parametry
pSender
Ukazatel na položku, která dokument změnila, nebo null, pokud se mají aktualizovat všechny položky.
LHint
Obsahuje informace o úpravě.
PHint
Ukazatel na objekt, který ukládá informace o úpravě.
nDrawAspect
Určuje způsob vykreslení položky. Toto je hodnota z výčtu DVASPECT. Tento parametr může mít jednu z následujících hodnot:
DVASPECT_CONTENT Položka je reprezentována způsobem, který lze zobrazit jako vložený objekt uvnitř kontejneru.
DVASPECT_THUMBNAIL Položka se vykreslí v reprezentaci miniatury, aby ji bylo možné zobrazit v nástroji pro procházení.
DVASPECT_ICON Položka je reprezentována ikonou.
DVASPECT_DOCPRINT Položka je reprezentována tak, jako kdyby byla vytištěna pomocí příkazu Tisk z nabídky Soubor.
Poznámky
Tuto funkci obvykle voláte poté, co uživatel změní dokument serveru. Pokud je položka OLE propojena s dokumentem s automatickým propojením, položka se aktualizuje tak, aby odrážela změny. V kontejnerových aplikacích napsaných pomocí knihovny tříd Microsoft Foundation je volána členská COleClientItem
funkce OnChange.
Tato funkce volá OnUpdate
členskou funkci pro každou položku dokumentu kromě odesílající položky, předávání pHint, lHint a nDrawAspect. Pomocí těchto parametrů můžete předat informace o položkách o změnách dokumentu. Informace můžete kódovat pomocí lHint nebo můžete definovat -odvozenou CObject
třídu k uložení informací o úpravách a předání objektu této třídy pomocí pHint. Přepište členovou OnUpdate
funkci ve vaší COleServerItem
-odvozené třídě, aby se optimalizovala aktualizace každé položky v závislosti na tom, jestli se její prezentace změnila.
Viz také
MFC – Ukázka HIERSVR
COleLinkingDoc – třída
Graf hierarchie
COleDocument – třída
COleLinkingDoc – třída
COleTemplateServer – třída