Sdílet prostřednictvím


COleServerItem – třída

Poskytuje serverové rozhraní pro položky OLE.

Syntaxe

class COleServerItem : public CDocItem

Členové

Chráněné konstruktory

Jméno popis
COleServerItem::COleServerItem COleServerItem Vytvoří objekt.

Veřejné metody

Jméno popis
COleServerItem::AddOtherClipboardData Umístí formáty prezentace a převodu do objektu COleDataSource .
COleServerItem::CopyToClipboard Zkopíruje položku do schránky.
COleServerItem::D oDragDrop Provede operaci přetažení.
COleServerItem::GetClipboardData Získá zdroj dat pro použití při přenosu dat (přetažení nebo schránka).
COleServerItem::GetDocument Vrátí serverový dokument, který obsahuje položku.
COleServerItem::GetEmbedSourceData Získá CF_EMBEDSOURCE data pro položku OLE.
COleServerItem::GetItemName Vrátí název položky. Používá se jenom pro propojené položky.
COleServerItem::GetLinkSourceData Získá CF_LINKSOURCE data pro položku OLE.
COleServerItem::GetObjectDescriptorData Získá CF_OBJECTDESCRIPTOR data pro položku OLE.
COleServerItem::Is Připojení ed Určuje, zda je položka aktuálně připojena k aktivnímu kontejneru.
COleServerItem::IsLinkedItem Určuje, zda položka představuje propojenou položku OLE.
COleServerItem::NotifyChanged Aktualizace všechny kontejnery s automatickou aktualizací propojení.
COleServerItem::OnDoVerb Volá se ke spuštění příkazu.
COleServerItem::OnDraw Volá se, když kontejner požaduje nakreslení položky; vyžaduje se implementace.
COleServerItem::OnDrawEx Volali jsme pro specializovaný výkres položek.
COleServerItem::OnGetClipboardData Volané architekturou pro získání dat, která by se zkopírovala do schránky.
COleServerItem::OnGetExtent Volá se rozhraním pro načtení velikosti položky OLE.
COleServerItem::OninitFromData Volá se rozhraním pro inicializaci položky OLE pomocí obsahu zadaného objektu přenosu dat.
COleServerItem::OnQueryUpdateItems Volá se k určení, jestli některé propojené položky vyžadují aktualizaci.
COleServerItem::OnRenderData Načte data jako součást zpožděného vykreslování.
COleServerItem::OnRenderFileData Načte data do objektu CFile v rámci zpožděného vykreslování.
COleServerItem::OnRenderGlobalData Načte data do HGLOBAL jako součást zpožděného vykreslování.
COleServerItem::OnSetColorScheme Volá se k nastavení barevného schématu položky.
COleServerItem::OnSetData Volá se k nastavení dat položky.
COleServerItem::OnSetExtent Volá se rozhraním pro nastavení velikosti položky OLE.
COleServerItem::OnUpdate Volá se, když se změní část dokumentu, do které položka patří.
COleServerItem::OnUpdateItems Volá se k aktualizaci mezipaměti prezentace všech položek v dokumentu serveru.
COleServerItem::SetItemName Nastaví název položky. Používá se jenom pro propojené položky.

Chráněné metody

Jméno popis
COleServerItem::GetDataSource Získá objekt použitý k ukládání formátů převodu.
COleServerItem::OnHide Volá se rozhraním pro skrytí položky OLE.
COleServerItem::OnOpen Volá se rozhraním pro zobrazení položky OLE ve vlastním okně nejvyšší úrovně.
COleServerItem::OnShow Volá se, když kontejner požádá o zobrazení položky.

Veřejné datové členy

Jméno popis
COleServerItem::m_sizeExtent Informuje server o tom, jak velká část položky OLE je viditelná.

Poznámky

Propojená položka může představovat nějaký nebo celý serverový dokument. Vložená položka vždy představuje celý dokument serveru.

Třída COleServerItem definuje několik přepisovatelných členských funkcí, které jsou volány knihovnami OLE dynamic-link (DLL), obvykle v reakci na požadavky z aplikace kontejneru. Tyto členské funkce umožňují aplikaci kontejneru manipulovat s položkou nepřímo různými způsoby, například zobrazením, spuštěním příkazů nebo načtením dat v různých formátech.

Chcete-li použít COleServerItem, odvození třídy z něj a implementace OnDraw a Serialize členské funkce. Funkce OnDraw poskytuje reprezentaci metasouboru položky, což umožňuje zobrazení při otevření složeného dokumentu aplikace kontejneru. Funkce SerializeCObject poskytuje nativní reprezentaci položky, která umožňuje přenos vložené položky mezi serverem a kontejnerovými aplikacemi. OnGetExtent poskytuje přirozenou velikost položky kontejneru, což kontejneru umožňuje velikost položky.

Další informace o serverech a souvisejících tématech najdete v článku Servery: Implementace serveru a "Vytvoření kontejnerové/serverové aplikace" v článku Kontejnery: Pokročilé funkce.

Hierarchie dědičnosti

Objekt CObject

CCmdTarget

CDocItem

COleServerItem

Požadavky

Hlavička: afxole.h

COleServerItem::AddOtherClipboardData

Voláním této funkce umístíte formáty prezentace a převodu pro položku OLE do zadaného COleDataSource objektu.

void AddOtherClipboardData(COleDataSource* pDataSource);

Parametry

pDataSource
Ukazatel na COleDataSource objekt, do kterého se mají data umístit.

Poznámky

Musíte mít implementovanou členovou funkci OnDraw k poskytnutí formátu prezentace (obrázek metasouboru) pro položku. Chcete-li podporovat jiné formáty převodu, zaregistrujte je pomocí objektu COleDataSource vrácený GetDataSource a přepište členské funkce OnRenderData tak, aby poskytovala data ve formátech, které chcete podporovat.

COleServerItem::COleServerItem

COleServerItem Vytvoří objekt a přidá ho do kolekce položek dokumentu serveru.

COleServerItem(
    COleServerDoc* pServerDoc,
    BOOL bAutoDelete);

Parametry

pServerDoc
Ukazatel na dokument, který bude obsahovat novou položku.

bAutoDelete
Příznak označující, zda lze objekt odstranit při uvolnění odkazu. Tuto hodnotu nastavte na HODNOTU FALSE, pokud COleServerItem je objekt nedílnou součástí dat dokumentu, která je nutné odstranit. Tuto hodnotu nastavte na true, pokud je objekt sekundární strukturou, která slouží k identifikaci rozsahu v datech dokumentu, která lze odstranit rozhraním.

COleServerItem::CopyToClipboard

Voláním této funkce zkopírujete položku OLE do schránky.

void CopyToClipboard(BOOL bIncludeLink = FALSE);

Parametry

bIncludeLink
Pokud by se data propojení měla zkopírovat do schránky, nastavte na hodnotu TRUE. Tuto hodnotu nastavte na FALSE, pokud serverová aplikace nepodporuje odkazy.

Poznámky

Funkce používá členskou funkci OnGetClipboardData k vytvoření objektu COleDataSource obsahujícího data položky OLE ve formátech podporovaných. Funkce pak objekt umístí COleDataSource do schránky pomocí funkce COleDataSource::SetClipboard . Objekt COleDataSource obsahuje nativní data položky a jeho reprezentaci ve formátu CF_METAFILEPICT a také data ve všech formátech převodu, které zvolíte pro podporu. Aby tato členová funkce fungovala, musíte mít implementovanou Serializaci a OnDraw .

COleServerItem::D oDragDrop

Volání členské DoDragDrop funkce k provedení operace přetažení.

DROPEFFECT DoDragDrop(
    LPCRECT lpRectItem,
    CPoint ptOffset,
    BOOL bIncludeLink = FALSE,
    DWORD dwEffects = DROPEFFECT_COPY | DROPEFFECT_MOVE,
    LPCRECT lpRectStartDrag = NULL);

Parametry

lpRectItem
Obdélník položky na obrazovce v pixelech vzhledem k oblasti klienta.

ptOffset
Posun od lpItemRect , kde byla pozice myši v době přetažení.

bIncludeLink
Pokud by se data propojení měla zkopírovat do schránky, nastavte na hodnotu TRUE. Pokud vaše aplikace nepodporuje odkazy, nastavte ji na FALSE.

DwEffects
Určuje efekty, které zdroj přetažení umožní v operaci přetažení (kombinace kopírování, přesunutí a propojení).

lpRectStartDrag
Ukazatel na obdélník, který definuje, kde se skutečně spouští přetažení. Další informace naleznete v následující části poznámky.

Vrácená hodnota

Hodnota z výčtu DROPEFFECT. Pokud je DROPEFFECT_MOVE, měla by se původní data odebrat.

Poznámky

Operace přetažení se nespustí okamžitě. Počká, dokud kurzor myši neopustí obdélník určený lpRectStartDrag nebo dokud nepřejde zadaný počet milisekund. Pokud je lpRectStartDrag NULL, použije se výchozí obdélník, aby se přetažení spustí, když kurzor myši přesune jeden pixel.

Doba zpoždění je určena nastavením klíče registru. Zpoždění můžete změnit voláním CWinApp::WriteProfileString nebo CWinApp::WriteProfileInt. Pokud nezadáte dobu zpoždění, použije se výchozí hodnota 200 milisekund. Doba zpoždění přetažení se ukládá takto:

  • systém Windows NT Doba zpoždění přetažení je uložena ve složce HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\NT\CurrentVersion\IniFileMapping\win.ini\Windows\DragDelay.

  • Čas zpoždění přetažení systému Windows 3.x je uložen v systému WIN. Soubor INI v části [Windows}.

  • Windows 95/98 Doba zpoždění přetažení je uložena v mezipaměti verze WIN. INI.

Další informace o tom, jak jsou informace o zpoždění přetažení uloženy v registru nebo v registru . Soubor INI viz WriteProfileString v sadě Windows SDK.

COleServerItem::GetClipboardData

Voláním této funkce vyplníte zadaný objekt COleDataSource všemi daty, která by se zkopírovala do schránky, pokud jste volali CopyToClipboard (stejná data by se také přenesla, pokud jste volali DoDragDrop).

void GetClipboardData(
    COleDataSource* pDataSource,
    BOOL bIncludeLink = FALSE,
    LPPOINT lpOffset = NULL,
    LPSIZE lpSize = NULL);

Parametry

pDataSource
Ukazatel na COleDataSource objekt, který obdrží data položky OLE ve všech podporovaných formátech.

bIncludeLink
TRUE, pokud by se data propojení měla zkopírovat do schránky. NEPRAVDA, pokud serverová aplikace nepodporuje odkazy.

lpOffset
Posun v pixelech kurzoru myši od počátku objektu.

lpSize
Velikost objektu v pixelech.

Poznámky

Tato funkce volá členovou funkci GetEmbedSourceData k získání nativních dat pro položku OLE a volá členovou funkci AddOtherClipboardData pro získání formátu prezentace a všech podporovaných formátů převodu. Pokud bIncludeLink je TRUE, funkce také volá GetLinkSourceData pro získání dat propojení pro položku.

Tuto funkci přepište, pokud chcete vložit formáty do objektu COleDataSource před nebo za tyto formáty dodané .CopyToClipboard

COleServerItem::GetDataSource

Voláním této funkce získáte objekt COleDataSource použitý k uložení formátů převodu, které serverová aplikace podporuje.

COleDataSource* GetDataSource();

Vrácená hodnota

Ukazatel na COleDataSource objekt použitý k uložení formátů převodu.

Poznámky

Pokud chcete, aby serverová aplikace během operací přenosu dat nabízela data v různých formátech, zaregistrujte tyto formáty u objektu COleDataSource vráceného touto funkcí. Pokud například chcete zadat CF_TEXT reprezentaci položky OLE pro operace schránky nebo přetažení myší, zaregistrujete formát u objektu COleDataSource , který tato funkce vrátí, a potom přepíšete OnRenderXxxData členovou funkci tak, aby poskytovala data.

COleServerItem::GetDocument

Voláním této funkce získáte ukazatel na dokument, který obsahuje položku.

COleServerDoc* GetDocument() const;

Vrácená hodnota

Ukazatel na dokument, který obsahuje položku; HODNOTA NULL, pokud položka není součástí dokumentu.

Poznámky

To umožňuje přístup k dokumentu serveru, který jste předali jako argument konstruktoru COleServerItem .

COleServerItem::GetEmbedSourceData

Voláním této funkce získáte data CF_EMBEDSOURCE pro položku OLE.

void GetEmbedSourceData(LPSTGMEDIUM lpStgMedium);

Parametry

lpStgMedium
Ukazatel na strukturu STGMEDIUM , která obdrží CF_EMBEDSOURCE data pro položku OLE.

Poznámky

Tento formát zahrnuje nativní data položky. Aby tato funkce správně fungovala, musíte mít implementovanou Serialize členovu funkci.

Výsledek pak lze přidat do zdroje dat pomocí COleDataSource::CacheData. Tato funkce je volána automaticky pomocí COleServerItem::OnGetClipboardData.

Další informace naleznete v tématu STGMEDIUM v sadě Windows SDK.

COleServerItem::GetItemName

Voláním této funkce získáte název položky.

const CString& GetItemName() const;

Vrácená hodnota

Název položky.

Poznámky

Tuto funkci obvykle voláte pouze pro propojené položky.

COleServerItem::GetLinkSourceData

Voláním této funkce získáte CF_LINKSOURCE data pro položku OLE.

BOOL GetLinkSourceData(LPSTGMEDIUM lpStgMedium);

Parametry

lpStgMedium
Ukazatel na strukturu STGMEDIUM , která obdrží CF_LINKSOURCE data pro položku OLE.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Tento formát zahrnuje CLSID popisující typ položky OLE a informace potřebné k vyhledání dokumentu obsahujícího položku OLE.

Výsledek se pak dá přidat do zdroje dat pomocí COleDataSource::CacheData. Tato funkce se volá automaticky pomocí OnGetClipboardData.

Další informace naleznete v tématu STGMEDIUM v sadě Windows SDK.

COleServerItem::GetObjectDescriptorData

Voláním této funkce získáte data CF_OBJECTDESCRIPTOR pro položku OLE.

void GetObjectDescriptorData(
    LPPOINT lpOffset,
    LPSIZE lpSize,
    LPSTGMEDIUM lpStgMedium);

Parametry

lpOffset
Posun kliknutí myší z levého horního rohu položky OLE. Může mít hodnotu NULL.

lpSize
Velikost položky OLE. Může mít hodnotu NULL.

lpStgMedium
Ukazatel na strukturu STGMEDIUM , která obdrží CF_OBJECTDESCRIPTOR data pro položku OLE.

Poznámky

Informace se zkopírují do STGMEDIUM struktury, na kterou odkazuje lpStgMedium. Tento formát obsahuje informace potřebné pro dialogové okno Vložit jinak.

Další informace naleznete v tématu STGMEDIUM v sadě Windows SDK.

COleServerItem::Is Připojení ed

Voláním této funkce zjistíte, zda je položka OLE připojena.

BOOL IsConnected() const;

Vrácená hodnota

Nenulové, pokud je položka připojena; jinak 0.

Poznámky

Položka OLE je považována za připojenou, pokud jeden nebo více kontejnerů obsahuje odkazy na položku. Položka je připojena, pokud je počet odkazů větší než 0 nebo je vložená položka.

COleServerItem::IsLinkedItem

Voláním této funkce zjistíte, jestli je položka OLE propojenou položkou.

BOOL IsLinkedItem() const;

Vrácená hodnota

Nenulové, pokud je položka propojenou položkou; jinak 0.

Poznámky

Položka je propojena, pokud je položka platná a není vrácena v seznamu vložených položek dokumentu. Propojená položka může nebo nemusí být připojená ke kontejneru.

Pro propojené i vložené položky je běžné používat stejnou třídu. IsLinkedItem umožňuje, aby se propojené položky chovaly jinak než vložené položky, i když často je kód běžný.

COleServerItem::m_sizeExtent

Tento člen informuje server, kolik objektu je viditelné v dokumentu kontejneru.

CSize m_sizeExtent;

Poznámky

Výchozí implementace OnSetExtent nastaví tento člen.

COleServerItem::NotifyChanged

Volání této funkce po změně propojené položky

void NotifyChanged(DVASPECT nDrawAspect = DVASPECT_CONTENT);

Parametry

nDrawAspect
Hodnota z výčtu DVASPECT, která označuje, který aspekt položky OLE se změnil. Tento parametr může mít některou 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

Pokud je položka kontejneru propojená s dokumentem s automatickým odkazem, položka se aktualizuje tak, aby odrážela změny. V kontejnerových aplikacích napsaných pomocí knihovny tříd Microsoft Foundation se V odpovědi volá COleClientItem::OnChange .

COleServerItem::OnDoVerb

Volá se rozhraním ke spuštění zadaného příkazu.

virtual void OnDoVerb(LONG iVerb);

Parametry

iVerb
Určuje příkaz, který se má provést. Může se jednat o jednu z následujících možností:

Hodnota Význam Symbol
0 primární požadavek OLEIVERB_PRIMARY
1 Sekundární sloveso (žádné)
-1 Zobrazit položku pro úpravy OLEIVERB_SHOW
-2 Upravit položku v samostatném okně OLEIVERB_OPEN
-3 Skrýt položku OLEIVERB_HIDE

Hodnota -1 je obvykle alias pro jiné sloveso. Pokud se otevřené úpravy nepodporují, má -2 stejný účinek jako -1. Další hodnoty najdete v tématu IOleObject::D oVerb v sadě Windows SDK.

Poznámky

Pokud byla aplikace kontejneru zapsána s knihovnou tříd Microsoft Foundation, tato funkce je volána při COleClientItem::Activate členské funkce odpovídajícího COleClientItem objektu je volána. Výchozí implementace volá členská funkce OnShow , pokud je zadána primární příkaz nebo OLEIVERB_SHOW, OnOpen , pokud je zadán sekundární příkaz nebo OLEIVERB_OPEN, a OnHide pokud je zadána OLEIVERB_HIDE. Výchozí volání OnShow implementace, pokud iVerb není jedním z příkazů uvedených výše.

Tuto funkci přepište, pokud se v primárním slovesu nezobrazí položka. Pokud je například položka zvukovým záznamem a jeho primární sloveso je Přehrát, nebudete muset zobrazit serverovou aplikaci, aby se položka přehrála.

Další informace naleznete v tématu IOleObject::D oVerb v sadě Windows SDK.

COleServerItem::OnDraw

Volá se rozhraním pro vykreslení položky OLE do metasouboru.

virtual BOOL OnDraw(
    CDC* pDC,
    CSize& rSize) = 0;

Parametry

Pdc
Ukazatel na objekt CDC , na který chcete nakreslit položku. Kontext zobrazení je automaticky připojen k kontextu zobrazení atributu, takže můžete volat funkce atributů, i když by to udělalo, aby objekt metasoubor byl specifický pro zařízení.

rSize
Velikost v jednotkách HIMETRIC, ve kterých chcete nakreslit metasoubor.

Vrácená hodnota

Nenulové, pokud byla položka úspěšně nakreslena; jinak 0.

Poznámky

Reprezentace metasouboru položky OLE slouží k zobrazení položky v aplikaci kontejneru. Pokud byla aplikace kontejneru zapsána s Knihovnou tříd Microsoft Foundation, metasoubor je používán funkcí Draw člen objektu COleClientItem . Neexistuje žádná výchozí implementace. Chcete-li položku nakreslit do zadaného kontextu zařízení, musíte tuto funkci přepsat.

COleServerItem::OnDrawEx

Volal by rámec pro všechny výkresy.

virtual BOOL OnDrawEx(
    CDC* pDC,
    DVASPECT nDrawAspect,
    CSize& rSize);

Parametry

Pdc
Ukazatel na objekt CDC , na který chcete nakreslit položku. Řadič domény je automaticky připojený k řadiči domény atributu, takže můžete volat funkce atributů, i když by to udělalo, aby byl metasoubor specifický pro zařízení.

nDrawAspect
Hodnota z výčtu DVASPECT. Tento parametr může mít některou 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.

rSize
Velikost položky v jednotkách HIMETRIC

Vrácená hodnota

Nenulové, pokud byla položka úspěšně nakreslena; jinak 0.

Poznámky

Výchozí volání OnDraw implementace, když je DVASPECT roven DVASPECT_CONTENT; jinak selže.

Přepište tuto funkci tak, aby poskytovala prezentační data pro jiné aspekty než DVASPECT_CONTENT, například DVASPECT_ICON nebo DVASPECT_THUMBNAIL.

COleServerItem::OnGetClipboardData

Volá se rozhraním pro získání objektu COleDataSource obsahujícího všechna data, která by byla umístěna do schránky voláním členské funkce CopyToClipboard .

virtual COleDataSource* OnGetClipboardData(
    BOOL bIncludeLink,
    LPPOINT lpOffset,
    LPSIZE lpSize);

Parametry

bIncludeLink
Pokud by se data propojení měla zkopírovat do schránky, nastavte na hodnotu TRUE. Tuto hodnotu nastavte na FALSE, pokud serverová aplikace nepodporuje odkazy.

lpOffset
Posun kurzoru myši od počátku objektu v pixelech.

lpSize
Velikost objektu v pixelech.

Vrácená hodnota

Ukazatel na objekt COleDataSource obsahující data schránky.

Poznámky

Výchozí implementace této funkce volá GetClipboardData.

COleServerItem::OnGetExtent

Volá se rozhraním pro načtení velikosti v jednotkách HIMETRIC položky OLE.

virtual BOOL OnGetExtent(
    DVASPECT nDrawAspect,
    CSize& rSize);

Parametry

nDrawAspect
Určuje aspekt položky OLE, jejíž hranice mají být načteny. Tento parametr může mít některou 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.

rSize
Odkaz na CSize objekt, který obdrží velikost položky OLE.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Pokud byla aplikace kontejneru zapsána s knihovnou tříd Microsoft Foundation, tato funkce je volána, když je volána členská funkce GetExtent odpovídajícího COleClientItem objektu. Výchozí implementace nic nedělá. Musíte ho implementovat sami. Tuto funkci přepište, pokud chcete při zpracování požadavku na velikost položky OLE provést speciální zpracování.

COleServerItem::OnHide

Volá se rozhraním pro skrytí položky OLE.

virtual void OnHide();

Poznámky

Výchozí volání COleServerDoc::OnShowDocument( FALSE ). Funkce také upozorní kontejner, že položka OLE byla skrytá. Tuto funkci přepište, pokud chcete provést speciální zpracování při skrytí položky OLE.

COleServerItem::OninitFromData

Volá se rozhraním pro inicializaci položky OLE pomocí obsahu objektu pDataObject.

virtual BOOL OnInitFromData(
    COleDataObject* pDataObject,
    BOOL bCreation);

Parametry

pDataObject
Ukazatel na datový objekt OLE obsahující data v různých formátech pro inicializaci položky OLE.

bCreation
TRUE, pokud je volána funkce k inicializaci položky OLE, která je nově vytvořena aplikací kontejneru. NEPRAVDA, pokud je volána funkce k nahrazení obsahu již existující položky OLE.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Pokud je bCreation TRUE, tato funkce je volána, pokud kontejner implementuje Insert New Object na základě aktuálního výběru. Vybraná data se používají při vytváření nové položky OLE. Když například vyberete oblast buněk v tabulkovém programu a pak pomocí příkazu Vložit nový objekt vytvoříte graf založený na hodnotách ve vybrané oblasti. Výchozí implementace nic nedělá. Přepište tuto funkci tak, aby zvolila přijatelný formát z těch, které nabízí pDataObject , a inicializovala položku OLE na základě zadaných dat. Jedná se o pokročilý přepis.

Další informace naleznete v tématu IOleObject::InitFromData v sadě Windows SDK.

COleServerItem::OnOpen

Volá se rozhraním pro zobrazení položky OLE v samostatné instanci serverové aplikace, nikoli na místě.

virtual void OnOpen();

Poznámky

Výchozí implementace aktivuje první okno rámce zobrazující dokument, který obsahuje položku OLE; pokud je aplikace miniserverem, zobrazí se výchozí implementace hlavního okna. Funkce také upozorní kontejner, že položka OLE byla otevřena.

Tuto funkci přepište, pokud chcete při otevření položky OLE provést speciální zpracování. To je zvlášť běžné u propojených položek, u kterých chcete při otevření nastavit výběr na odkaz.

Další informace naleznete v tématu IOleClientSite::OnShowWindow v sadě Windows SDK.

COleServerItem::OnQueryUpdateItems

Volá se rozhraním, aby bylo možné určit, jestli některé propojené položky v aktuálním dokumentu serveru nejsou aktuální.

virtual BOOL OnQueryUpdateItems();

Vrácená hodnota

Nenulové, pokud dokument obsahuje položky, které potřebují aktualizace; 0, pokud jsou všechny položky aktuální.

Poznámky

Pokud byl zdrojový dokument změněn, ale propojená položka nebyla aktualizována tak, aby odrážela změny v dokumentu, je zastaralý.

COleServerItem::OnRenderData

Volá se rozhraním pro načtení dat v zadaném formátu.

virtual BOOL OnRenderData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium);

Parametry

lpFormatEtc
Odkazuje na strukturu FORMATETC určující formát, ve kterém jsou požadovány informace.

lpStgMedium
Odkazuje na strukturu STGMEDIUM , ve které se mají vrátit data.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Zadaný formát je dříve umístěn v COleDataSource objektu pomocí DelayRenderData nebo DelayRenderFileData členské funkce pro zpožděné vykreslování. Výchozí implementace této funkce volá OnRenderFileData nebo OnRenderGlobalData, pokud zadané médium úložiště je soubor nebo paměť. Pokud není zadán žádný z těchto formátů, vrátí výchozí implementace hodnotu 0 a nic nedělá.

Pokud je lpStgMedium-tymed> TYMED_NULL, měl by stGMEDIUM přidělit a vyplnit podle lpFormatEtc-tymed.> Pokud není TYMED_NULL, měl by být soubor STGMEDIUM vyplněný daty.

Jedná se o pokročilý přepis. Tuto funkci přepište tak, aby poskytovala vaše data v požadovaném formátu a médiu. V závislosti na datech můžete místo toho chtít přepsat jednu z dalších verzí této funkce. Pokud jsou vaše data malá a pevná, přepište OnRenderGlobalData. Pokud jsou vaše data v souboru nebo mají proměnnou velikost, přepište OnRenderFileData.

Další informace naleznete v tématu IDataObject::GetData, STGMEDIUM, FORMATETC a TYMED v sadě Windows SDK.

COleServerItem::OnRenderFileData

Volá se rozhraním pro načtení dat v zadaném formátu, když je médium úložiště soubor.

virtual BOOL OnRenderFileData(
    LPFORMATETC lpFormatEtc,
    CFile* pFile);

Parametry

lpFormatEtc
Odkazuje na strukturu FORMATETC určující formát, ve kterém jsou požadovány informace.

pFile
Odkazuje na CFile objekt, ve kterém se mají data vykreslit.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Zadaný formát je dříve umístěný v objektu COleDataSourcepomocí členské funkce DelayRenderData pro zpožděné vykreslování. Výchozí implementace této funkce jednoduše vrátí hodnotu FALSE.

Jedná se o pokročilý přepis. Tuto funkci přepište tak, aby poskytovala vaše data v požadovaném formátu a médiu. V závislosti na datech můžete místo toho přepsat jednu z dalších verzí této funkce. Pokud chcete zpracovat více médií úložiště, přepište OnRenderData. Pokud jsou vaše data v souboru nebo mají proměnnou velikost, přepište OnRenderFileData.

Další informace naleznete v tématu IDataObject::GetData a FORMATETC v sadě Windows SDK.

COleServerItem::OnRenderGlobalData

Volá se rozhraním pro načtení dat v zadaném formátu, pokud je zadané médium úložiště globální paměť.

virtual BOOL OnRenderGlobalData(
    LPFORMATETC lpFormatEtc,
    HGLOBAL* phGlobal);

Parametry

lpFormatEtc
Odkazuje na strukturu FORMATETC určující formát, ve kterém jsou požadovány informace.

PhGlobal
Odkazuje na popisovač na globální paměť, ve které se mají data vrátit. Pokud není přidělena žádná paměť, může mít tento parametr hodnotu NULL.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Zadaný formát je dříve umístěný v objektu COleDataSourcepomocí členské funkce DelayRenderData pro zpožděné vykreslování. Výchozí implementace této funkce jednoduše vrátí hodnotu FALSE.

Pokud je phGlobal NULL, měl by být přidělen nový HGLOBAL a vrácen v phGlobal. V opačném případě by měl být HGLOBAL určený phGlobal vyplněn daty. Množství dat umístěných v HGLOBAL nesmí překročit aktuální velikost paměťového bloku. Blok navíc nelze převést na větší velikost.

Jedná se o pokročilý přepis. Tuto funkci přepište tak, aby poskytovala vaše data v požadovaném formátu a médiu. V závislosti na datech můžete místo toho chtít přepsat jednu z dalších verzí této funkce. Pokud chcete zpracovat více médií úložiště, přepište OnRenderData. Pokud jsou vaše data v souboru nebo mají proměnnou velikost, přepište OnRenderFileData.

Další informace naleznete v tématu IDataObject::GetData a FORMATETC v sadě Windows SDK.

COleServerItem::OnSetColorScheme

Volá se rozhraním pro určení barevné palety, která se má použít při úpravě položky OLE.

virtual BOOL OnSetColorScheme(const LOGPALETTE* lpLogPalette);

Parametry

lpLogPalette
Ukazatel na strukturu Windows LOGPALETTE .

Vrácená hodnota

Nenulové, pokud se používá paleta barev; jinak 0.

Poznámky

Pokud byla aplikace kontejneru zapsána pomocí knihovny tříd Microsoft Foundation, tato funkce je volána při IOleObject::SetColorScheme funkce odpovídající COleClientItem objektu je volána. Výchozí implementace vrátí hodnotu FALSE. Tuto funkci přepište, pokud chcete použít doporučenou paletu. Serverová aplikace není nutná k použití navrhované palety.

Další informace naleznete v tématu IOleObject::SetColorScheme v sadě Windows SDK.

COleServerItem::OnSetData

Volá se rozhraním pro nahrazení dat položky OLE zadanými daty.

virtual BOOL OnSetData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium,
    BOOL bRelease);

Parametry

lpFormatEtc
Ukazatel na strukturu FORMATETC určující formát dat.

lpStgMedium
Ukazatel na strukturu STGMEDIUM , ve které se data nacházejí.

bRelease
Určuje, kdo má vlastnictví média úložiště po dokončení volání funkce. Volající rozhodne, kdo je zodpovědný za uvolnění prostředků přidělených jménem média úložiště. Volající to provede nastavením bRelease. Pokud bRelease je nenulová, položka serveru převezme vlastnictví a uvolní médium po jeho použití. Pokud je hodnota bRelease 0, volající si zachová vlastnictví a položka serveru může použít médium úložiště pouze po dobu trvání volání.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Položka serveru nepřebírají vlastnictví dat, dokud je úspěšně nezískala. To znamená, že nepřebírají vlastnictví, pokud vrátí hodnotu 0. Pokud zdroj dat převezme vlastnictví, uvolní médium úložiště voláním funkce ReleaseStgMedium .

Výchozí implementace nic nedělá. Přepište tuto funkci tak, aby nahradila data položky OLE zadanými daty. Jedná se o pokročilý přepis.

Další informace naleznete v tématu STGMEDIUM, FORMATETC a ReleaseStgMedium v sadě Windows SDK.

COleServerItem::OnSetExtent

Volá se architekturou, která říká položce OLE, kolik místa je k dispozici v dokumentu kontejneru.

virtual BOOL OnSetExtent(
    DVASPECT nDrawAspect,
    const CSize& size);

Parametry

nDrawAspect
Určuje aspekt položky OLE, jejíž hranice jsou zadány. Tento parametr může mít některou 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.

Velikost
Struktura CSize určující novou velikost položky OLE.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Pokud byla aplikace kontejneru zapsána s knihovnou tříd Microsoft Foundation, tato funkce se volá, když je volána členská funkce SetExtent odpovídajícího COleClientItem objektu. Výchozí implementace nastaví m_sizeExtent člen na zadanou velikost, pokud nDrawAspect je DVASPECT_CONTENT; jinak vrátí hodnotu 0. Tuto funkci přepište tak, aby při změně velikosti položky prováděla speciální zpracování.

COleServerItem::OnShow

Volá se architekturou, která dává serverové aplikaci pokyn, aby zobrazila položku OLE na místě.

virtual void OnShow();

Poznámky

Tato funkce se obvykle volá, když uživatel aplikace kontejneru vytvoří položku nebo spustí příkaz, například Upravit, který vyžaduje zobrazení položky. Výchozí implementace se pokusí o místní aktivaci. Pokud se to nezdaří, funkce zavolá OnOpen členovou funkci, aby zobrazila položku OLE v samostatném okně.

Tuto funkci přepište, pokud chcete provést speciální zpracování při zobrazení položky OLE.

COleServerItem::OnUpdate

Volá se rozhraním, pokud byla položka změněna.

virtual void OnUpdate(
    COleServerItem* pSender,
    LPARAM lHint,
    CObject* pHint,
    DVASPECT nDrawAspect);

Parametry

pSender
Ukazatel na položku, která dokument upravila. Může mít hodnotu NULL.

LHint
Obsahuje informace o úpravě.

PHint
Ukazatel na objekt, který ukládá informace o úpravě.

nDrawAspect
Hodnota z výčtu DVASPECT. Tento parametr může mít některou 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

Výchozí implementace volá NotifyChanged bez ohledu na nápovědu nebo odesílatele.

COleServerItem::OnUpdateItems

Volá se rozhraním pro aktualizaci všech položek v dokumentu serveru.

virtual void OnUpdateItems();

Poznámky

Výchozí implementace volá UpdateLink pro všechny COleClientItem objekty v dokumentu.

COleServerItem::SetItemName

Volání této funkce při vytvoření propojené položky k nastavení jejího názvu.

void SetItemName(LPCTSTR lpszItemName);

Parametry

lpszItemName
Ukazatel na nový název položky

Poznámky

Název musí být v dokumentu jedinečný. Když je volána serverová aplikace pro úpravu propojené položky, aplikace použije tento název k vyhledání položky. Tuto funkci nemusíte volat pro vložené položky.

Viz také

MFC – Ukázka HIERSVR
CDocItem – třída
Graf hierarchie
COleClientItem – třída
COleServerDoc – třída
COleTemplateServer – třída