COleServerItem – třída
Poskytuje serverové rozhraní pro položky OLE.
Syntaxe
class COleServerItem : public CDocItem
Členové
Chráněné konstruktory
Název | Popis |
---|---|
COleServerItem::COleServerItem | COleServerItem Vytvoří objekt. |
Veřejné metody
Název | 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::IsConnected | 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 | Aktualizuje všechny kontejnery pomocí automatické aktualizace 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
Název | 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
Název | 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 Serialize
CObject
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
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.
Návratová 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();
Návratová 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;
Návratová 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;
Návratová 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.
Návratová 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::IsConnected
Voláním této funkce zjistíte, zda je položka OLE připojena.
BOOL IsConnected() const;
Návratová 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;
Návratová 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 |
0 | 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.
Návratová 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
Návratová 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.
Návratová 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.
Návratová 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.
Návratová 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();
Návratová 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.
Návratová 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.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Zadaný formát je dříve umístěný v objektu COleDataSource
pomocí č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.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Zadaný formát je dříve umístěný v objektu COleDataSource
pomocí č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 .
Návratová 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í.
Návratová 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.
Návratová 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