Dela via


COleServerDoc-klass

Basklassen för OLE-serverdokument.

Syntax

class AFX_NOVTABLE COleServerDoc : public COleLinkingDoc

Medlemmar

Offentliga konstruktorer

Namn Beskrivning
COleServerDoc::COleServerDoc Konstruerar ett COleServerDoc objekt.

Offentliga metoder

Namn Beskrivning
COleServerDoc::ActivateDocObject Aktiverar det associerade DocObject-dokumentet.
COleServerDoc::ActivateInPlace Aktiverar dokumentet för redigering på plats.
COleServerDoc::D eactivateAndUndo Inaktiverar serverns användargränssnitt.
COleServerDoc::D iscardUndoState Tar bort information om ångra-tillstånd.
COleServerDoc::GetClientSite Hämtar en pekare till det underliggande IOleClientSite-gränssnittet.
COleServerDoc::GetEmbeddedItem Returnerar en pekare till ett objekt som representerar hela dokumentet.
COleServerDoc::GetItemClipRect Returnerar den aktuella urklippsrektangeln för redigering på plats.
COleServerDoc::GetItemPosition Returnerar den aktuella positionsrektangeln, i förhållande till containerprogrammets klientområde, för redigering på plats.
COleServerDoc::GetZoomFactor Returnerar zoomfaktorn i bildpunkter.
COleServerDoc::IsDocObject Avgör om dokumentet är en DocObject.
COleServerDoc::IsEmbedded Anger om dokumentet är inbäddat i ett containerdokument eller om det körs fristående.
COleServerDoc::IsInPlaceActive Returnerar TRUE om objektet för närvarande är aktiverat på plats.
COleServerDoc::NotifyChanged Meddelar containrar att användaren har ändrat dokumentet.
COleServerDoc::NotifyClosed Meddelar containrar att användaren har stängt dokumentet.
COleServerDoc::NotifyRename Meddelar containrar som användaren har bytt namn på dokumentet.
COleServerDoc::NotifySaved Meddelar containrar som användaren har sparat dokumentet.
COleServerDoc::OnDeactivate Anropas av ramverket när användaren inaktiverar ett objekt som har aktiverats på plats.
COleServerDoc::OnDeactivateUI Anropas av ramverket för att förstöra kontroller och andra användargränssnittselement som skapats för aktivering på plats.
COleServerDoc::OnDocWindowActivate Anropas av ramverket när containerns dokumentramfönster aktiveras eller inaktiveras.
COleServerDoc::OnResizeBorder Anropas av ramverket när containerprogrammets ramfönster eller dokumentfönster ändras.
COleServerDoc::OnShowControlBars Anropas av ramverket för att visa eller dölja kontrollstaplar för redigering på plats.
COleServerDoc::OnUpdateDocument Anropas av ramverket när ett serverdokument som är ett inbäddat objekt sparas och uppdaterar containerns kopia av objektet.
COleServerDoc::RequestPositionChange Ändrar positionen för redigeringsramen på plats.
COleServerDoc::SaveEmbedding Meddelar containerprogrammet att spara dokumentet.
COleServerDoc::ScrollContainerBy Rullar containerdokumentet.
COleServerDoc::UpdateAllItems Meddelar containrar att användaren har ändrat dokumentet.

Skyddade metoder

Namn Beskrivning
COleServerDoc::CreateInPlaceFrame Anropas av ramverket för att skapa ett ramfönster för redigering på plats.
COleServerDoc::D estroyInPlaceFrame Anropas av ramverket för att förstöra ett ramfönster för redigering på plats.
COleServerDoc::GetDocObjectServer Åsidosätt den här funktionen för att skapa ett nytt CDocObjectServer-objekt och ange att det här dokumentet är en DocObject-container.
COleServerDoc::OnClose Anropas av ramverket när en container begär att dokumentet ska stängas.
COleServerDoc::OnExecOleCmd Kör ett angivet kommando eller visar hjälp för kommandot.
COleServerDoc::OnFrameWindowActivate Anropas av ramverket när containerns ramfönster aktiveras eller inaktiveras.
COleServerDoc::OnGetEmbeddedItem Anropas för att hämta en COleServerItem som representerar hela dokumentet. används för att hämta ett inbäddat objekt. Implementering krävs.
COleServerDoc::OnReactivateAndUndo Anropas av ramverket för att ångra ändringar som gjorts under redigering på plats.
COleServerDoc::OnSetHostNames Anropas av ramverket när en container anger fönsterrubriken för ett inbäddat objekt.
COleServerDoc::OnSetItemRects Anropas av ramverket för att placera fönstret för redigeringsramen på plats i containerprogrammets fönster.
COleServerDoc::OnShowDocument Anropas av ramverket för att visa eller dölja dokumentet.

Anmärkningar

Ett serverdokument kan innehålla COleServerItem objekt som representerar servergränssnittet för inbäddade eller länkade objekt. När ett serverprogram startas av en container för att redigera ett inbäddat objekt läses objektet in som ett eget serverdokument. COleServerDoc-objektet innehåller bara ett COleServerItem objekt som består av hela dokumentet. När ett serverprogram startas av en container för att redigera ett länkat objekt läses ett befintligt dokument in från disken. en del av dokumentets innehåll är markerat för att indikera det länkade objektet.

COleServerDoc objekt kan också innehålla objekt i klassen COleClientItem. På så sätt kan du skapa container-server-program. Ramverket tillhandahåller funktioner för att lagra de COleClientItem objekten korrekt vid underhåll av de COleServerItem objekten.

Om serverprogrammet inte stöder länkar innehåller ett serverdokument alltid bara ett serverobjekt, vilket representerar hela det inbäddade objektet som ett dokument. Om serverprogrammet stöder länkar måste det skapa ett serverobjekt varje gång en markering kopieras till Urklipp.

Om du vill använda COleServerDochärleder du en klass från den och implementerar OnGetEmbeddedItem medlemsfunktion, vilket gör att servern kan stödja inbäddade objekt. Härled en klass från COleServerItem för att implementera objekten i dina dokument och returnera objekt för den klassen från OnGetEmbeddedItem.

För att stödja länkade objekt tillhandahåller COleServerDoc funktionen OnGetLinkedItem medlem. Du kan använda standardimplementeringen eller åsidosätta den om du har ett eget sätt att hantera dokumentobjekt.

Du behöver en COleServerDoc-härledd klass för varje typ av serverdokument som programmet stöder. Om serverprogrammet till exempel stöder kalkylblad och diagram behöver du två COleServerDoc-härledda klasser.

Mer information om servrar finns i artikeln Servers: Implementing a Server.

Arvshierarki

CObject

CCmdTarget

CDocument

COleDocument

COleLinkingDoc

COleServerDoc

Krav

rubrik: afxole.h

COleServerDoc::ActivateDocObject

Aktiverar det associerade DocObject-dokumentet.

void ActivateDocObject();

Anmärkningar

Som standard stöder COleServerDoc inte aktiva dokument (kallas även DocObjects). Om du vill aktivera det här stödet kan du läsa GetDocObjectServer och klass CDocObjectServer.

COleServerDoc::ActivateInPlace

Aktiverar objektet för redigering på plats.

BOOL ActivateInPlace();

Returvärde

Nonzero om det lyckas; annars 0, vilket indikerar att objektet är helt öppet.

Anmärkningar

Den här funktionen utför alla åtgärder som krävs för aktivering på plats. Det skapar ett ramfönster på plats, aktiverar det och storleksanpassar det till objektet, konfigurerar delade menyer och andra kontroller, rullar objektet i vyn och ställer in fokus på ramfönstret på plats.

Den här funktionen anropas av standardimplementeringen av COleServerItem::OnShow. Anropa den här funktionen om programmet stöder ett annat verb för aktivering på plats (till exempel Spela upp).

COleServerDoc::COleServerDoc

Konstruerar ett COleServerDoc objekt utan att ansluta med OLE-system-DLL:er.

COleServerDoc();

Anmärkningar

Du måste anropa COleLinkingDoc::Registrera för att öppna kommunikationen med OLE. Om du använder COleTemplateServer i programmet anropas COleLinkingDoc::Register av COleLinkingDocimplementering av OnNewDocument, OnOpenDocumentoch OnSaveDocument.

COleServerDoc::CreateInPlaceFrame

Ramverket anropar den här funktionen för att skapa ett ramfönster för redigering på plats.

virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);

Parametrar

pParentWnd
Pekare mot containerprogrammets överordnade fönster.

Returvärde

En pekare till ramfönstret på plats eller NULL om det inte lyckas.

Anmärkningar

Standardimplementeringen använder information som anges i dokumentmallen för att skapa ramen. Vyn som används är den första vyn som skapats för dokumentet. Den här vyn kopplas tillfälligt från den ursprungliga ramen och kopplas till den nyligen skapade ramen.

Det här är ett avancerat åsidosättande.

COleServerDoc::D eactivateAndUndo

Anropa den här funktionen om programmet stöder Ångra och användaren väljer Ångra efter att ha aktiverat ett objekt men innan det redigeras.

BOOL DeactivateAndUndo();

Returvärde

Nonzero på framgång; annars 0.

Anmärkningar

Om containerprogrammet skrivs med hjälp av Microsoft Foundation-klassbiblioteket orsakar anrop av den här funktionen COleClientItem::OnDeactivateAndUndo anropas, vilket inaktiverar serverns användargränssnitt.

COleServerDoc::D estroyInPlaceFrame

Ramverket anropar den här funktionen för att förstöra ett ramfönster på plats och returnera serverprogrammets dokumentfönster till dess tillstånd före aktivering på plats.

virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);

Parametrar

pFrameWnd
Pekare till ramfönstret på plats som ska förstöras.

Anmärkningar

Det här är ett avancerat åsidosättande.

COleServerDoc::D iscardUndoState

Om användaren utför en redigeringsåtgärd som inte kan ångras anropar du den här funktionen för att tvinga containerprogrammet att ignorera dess ångra-tillståndsinformation.

BOOL DiscardUndoState();

Returvärde

Nonzero på framgång; annars 0.

Anmärkningar

Den här funktionen tillhandahålls så att servrar som stöder Ångra kan frigöra resurser som annars skulle förbrukas av information om ångra-tillstånd som inte kan användas.

COleServerDoc::GetClientSite

Hämtar en pekare till det underliggande IOleClientSite-gränssnittet.

LPOLECLIENTSITE GetClientSite() const;

Returvärde

Hämtar en pekare till det underliggande IOleClientSite--gränssnittet.

COleServerDoc::GetDocObjectServer

Åsidosätt den här funktionen för att skapa ett nytt CDocObjectServer objekt och returnera en pekare till den.

virtual CDocObjectServer* GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite);

Parametrar

pDocSite
Pekare till det IOleDocumentSite gränssnitt som ansluter det här dokumentet till servern.

Returvärde

En pekare till en CDocObjectServer; NULL om åtgärden misslyckades.

Anmärkningar

När en DocObject-server aktiveras visar returnerande av en icke-NULL-pekare att klienten kan stödja DocObjects. Standardimplementeringen returnerar NULL.

En typisk implementering för ett dokument som stöder DocObjects allokerar helt enkelt ett nytt CDocObjectServer objekt och returnerar det till anroparen. Till exempel:

CDocObjectServer* CMFCOleServerDoc::GetDocObjectServer(LPOLEDOCUMENTSITE pSite)
{
   return new CDocObjectServer(this, pSite);
}

COleServerDoc::GetEmbeddedItem

Anropa den här funktionen för att hämta en pekare till ett objekt som representerar hela dokumentet.

COleServerItem* GetEmbeddedItem();

Returvärde

En pekare till ett objekt som representerar hela dokumentet. NULL om åtgärden misslyckades.

Anmärkningar

Den anropar COleServerDoc::OnGetEmbeddedItem, en virtuell funktion utan standardimplementering.

COleServerDoc::GetItemClipRect

Anropa funktionen GetItemClipRect medlem för att hämta koordinaterna för urklippsrektangeln för objektet som redigeras på plats.

void GetItemClipRect(LPRECT lpClipRect) const;

Parametrar

lpClipRect
Pekare till en RECT struktur eller ett CRect objekt för att ta emot objektets koordinater för urklippsrektangeln.

Anmärkningar

Koordinaterna finns i bildpunkter i förhållande till klientområdet för containerprogrammet.

Ritning bör inte ske utanför urklippsrektangeln. Vanligtvis begränsas ritningen automatiskt. Använd den här funktionen för att avgöra om användaren har rullat utanför den synliga delen av dokumentet. I så fall rullar du containerdokumentet efter behov med hjälp av ett anrop till ScrollContainerBy.

COleServerDoc::GetItemPosition

Anropa funktionen GetItemPosition medlem för att hämta koordinaterna för objektet som redigeras på plats.

void GetItemPosition(LPRECT lpPosRect) const;

Parametrar

lpPosRect
Pekare mot en RECT struktur eller ett CRect objekt för att ta emot objektets koordinater.

Anmärkningar

Koordinaterna finns i bildpunkter i förhållande till klientområdet för containerprogrammet.

Objektets position kan jämföras med den aktuella urklippsrektangeln för att fastställa i vilken utsträckning objektet är synligt (eller inte synligt) på skärmen.

COleServerDoc::GetZoomFactor

Funktionen GetZoomFactor medlem avgör "zoomfaktorn" för ett objekt som har aktiverats för redigering på plats.

BOOL GetZoomFactor(
    LPSIZE lpSizeNum = NULL,
    LPSIZE lpSizeDenom = NULL,
    LPCRECT lpPosRect = NULL) const;

Parametrar

lpSizeNum
Pekare till ett objekt i klassen CSize som innehåller zoomfaktorns täljare. Kan vara NULL.

lpSizeDenom
Pekare till ett objekt i klassen CSize som innehåller zoomfaktorns nämnare. Kan vara NULL.

lpPosRect
Pekare till ett objekt i klassen CRect som beskriver objektets nya position. Om det här argumentet är NULL använder funktionen objektets aktuella position.

Returvärde

Nonzero om objektet är aktiverat för redigering på plats och dess zoomfaktor är annan än 100% (1:1); annars 0.

Anmärkningar

Zoomfaktorn i bildpunkter är andelen av objektets storlek i dess aktuella omfattning. Om containerprogrammet inte har angett objektets omfattning används dess naturliga omfattning (enligt COleServerItem::OnGetExtent) .

Funktionen anger sina två första argument till täljaren och nämnaren för objektets "zoomfaktor". Om objektet inte redigeras på plats anger funktionen dessa argument till ett standardvärde på 100% (eller 1:1) och returnerar noll. Mer information finns i Technical Note 40, MFC/OLE In-Place Resizing and Zooming.

COleServerDoc::IsDocObject

Avgör om dokumentet är en DocObject.

BOOL IsDocObject() const;

Returvärde

SANT om dokumentet är en DocObject; annars FALSKT.

COleServerDoc::IsEmbedded

Anropa funktionen IsEmbedded medlem för att avgöra om dokumentet representerar ett objekt som är inbäddat i en container.

BOOL IsEmbedded() const;

Returvärde

Nonzero om COleServerDoc-objektet är ett dokument som representerar ett objekt som är inbäddat i en container. annars 0.

Anmärkningar

Ett dokument som läses in från en fil är inte inbäddat, även om det kan manipuleras av ett containerprogram som en länk. Ett dokument som är inbäddat i ett containerdokument anses vara inbäddat.

COleServerDoc::IsInPlaceActive

Anropa funktionen IsInPlaceActive medlem för att avgöra om objektet för närvarande är i aktivt tillstånd på plats.

BOOL IsInPlaceActive() const;

Returvärde

Nonzero om COleServerDoc-objektet är aktivt på plats; annars 0.

COleServerDoc::NotifyChanged

Anropa den här funktionen för att meddela alla länkade objekt som är anslutna till dokumentet att dokumentet har ändrats.

void NotifyChanged();

Anmärkningar

Normalt anropar du den här funktionen när användaren har ändrat något globalt attribut, till exempel dimensionerna i serverdokumentet. Om ett OLE-objekt är länkat till dokumentet med en automatisk länk uppdateras objektet så att det återspeglar ändringarna. I containerprogram som skrivits med Microsoft Foundation-klassbiblioteket anropas OnChange medlemsfunktion för COleClientItem.

Not

Den här funktionen ingår för kompatibilitet med OLE 1. Nya program bör använda UpdateAllItems.

COleServerDoc::NotifyClosed

Anropa den här funktionen för att meddela containern eller containern att dokumentet har stängts.

void NotifyClosed();

Anmärkningar

När användaren väljer kommandot Stäng på menyn Arkiv anropas NotifyClosed av COleServerDocimplementering av funktionen OnCloseDocument member. I containerprogram som skrivits med Microsoft Foundation-klassbiblioteket anropas OnChange medlemsfunktion för COleClientItem.

COleServerDoc::NotifyRename

Anropa den här funktionen när användaren har bytt namn på serverdokumentet.

void NotifyRename(LPCTSTR lpszNewName);

Parametrar

lpszNewName
Pekare till en sträng som anger det nya namnet på serverdokumentet. Detta är vanligtvis en fullständigt kvalificerad sökväg.

Anmärkningar

När användaren väljer kommandot Spara som på arkiv-menyn anropas NotifyRename av COleServerDocimplementering av funktionen OnSaveDocument member. Den här funktionen meddelar OLE-systemets DLL:er, vilket i sin tur meddelar containrarna. I containerprogram som skrivits med Microsoft Foundation-klassbiblioteket anropas OnChange medlemsfunktion för COleClientItem.

COleServerDoc::NotifySaved

Anropa den här funktionen när användaren har sparat serverdokumentet.

void NotifySaved();

Anmärkningar

När användaren väljer kommandot Spara på menyn Arkiv anropas NotifySaved dig genom att COleServerDocimplementering av OnSaveDocument. Den här funktionen meddelar OLE-systemets DLL:er, vilket i sin tur meddelar containrarna. I containerprogram som skrivits med Microsoft Foundation-klassbiblioteket anropas OnChange medlemsfunktion för COleClientItem.

COleServerDoc::OnClose

Anropas av ramverket när en container begär att serverdokumentet stängs.

virtual void OnClose(OLECLOSE dwCloseOption);

Parametrar

dwCloseOption
Ett värde från uppräkningen OLECLOSE. Den här parametern kan ha något av följande värden:

  • OLECLOSE_SAVEIFDIRTY Filen sparas om den har ändrats.

  • OLECLOSE_NOSAVE Filen stängs utan att sparas.

  • OLECLOSE_PROMPTSAVE Om filen har ändrats uppmanas användaren att spara den.

Anmärkningar

Standardimplementeringsanropen CDocument::OnCloseDocument.

Mer information och ytterligare värden finns i OLECLOSE- i Windows SDK.

COleServerDoc::OnDeactivate

Anropas av ramverket när användaren inaktiverar ett inbäddat eller länkat objekt som för närvarande är aktivt på plats.

virtual void OnDeactivate();

Anmärkningar

Den här funktionen återställer containerprogrammets användargränssnitt till sitt ursprungliga tillstånd och förstör alla menyer och andra kontroller som har skapats för aktivering på plats.

Informationen om att ångra tillstånd bör vara ovillkorligt frisläppt i det här läget.

Mer information finns i artikeln Aktivering.

COleServerDoc::OnDeactivateUI

Anropas när användaren inaktiverar ett objekt som har aktiverats på plats.

virtual void OnDeactivateUI(BOOL bUndoable);

Parametrar

bUndoable
Anger om redigeringsändringarna kan ångras.

Anmärkningar

Den här funktionen återställer containerprogrammets användargränssnitt till sitt ursprungliga tillstånd och döljer alla menyer och andra kontroller som har skapats för aktivering på plats.

Ramverket anger alltid bUndoable till FALSE. Om servern stöder ångra och det finns en åtgärd som kan ångras anropar du basklassimplementeringen med bUndoable inställd på TRUE.

COleServerDoc::OnDocWindowActivate

Ramverket anropar den här funktionen för att aktivera eller inaktivera ett dokumentfönster för redigering på plats.

virtual void OnDocWindowActivate(BOOL bActivate);

Parametrar

bActivate
Anger om dokumentfönstret ska aktiveras eller inaktiveras.

Anmärkningar

Standardimplementeringen tar bort eller lägger till användargränssnittselementen på ramnivå efter behov. Åsidosätt den här funktionen om du vill utföra ytterligare åtgärder när dokumentet som innehåller objektet aktiveras eller inaktiveras.

Mer information finns i artikeln Aktivering.

COleServerDoc::OnExecOleCmd

Ramverket anropar den här funktionen för att köra ett angivet kommando eller visa hjälp för kommandot.

virtual HRESULT OnExecOleCmd(
    const GUID* pguidCmdGroup,
    DWORD nCmdID,
    DWORD nCmdExecOpt,
    VARIANTARG* pvarargIn,
    VARIANTARG* pvarargOut);

Parametrar

pguidCmdGroup
En pekare till ett GUID som identifierar en uppsättning kommandon. Kan vara NULL för att ange standardkommandogruppen.

nCmdID
Kommandot som ska köras. Måste finnas i den grupp som identifieras av pguidCmdGroup.

nCmdExecOut
Hur objektet ska köra kommandot, ett eller flera av följande värden från OLECMDEXECOPT-uppräkningen:

OLECMDEXECOPT_DODEFAULT

OLECMDEXECOPT_PROMPTUSER

OLECMDEXECOPT_DONTPROMPTUSER

OLECMDEXECOPT_SHOWHELP

pvarargIn
Pekare till en VARIANTARG som innehåller indataargument för kommandot. Kan vara NULL.

pvarargOut
Pekare till en VARIANTARG för att ta emot utdatareturvärdena från kommandot. Kan vara NULL.

Returvärde

Returnerar S_OK om det lyckas. i annat fall någon av följande felkoder:

Värde Beskrivning
E_UNEXPECTED Ett oväntat fel uppstod
E_FAIL Fel uppstod
E_NOTIMPL Anger att själva MFC ska försöka översätta och skicka kommandot
OLECMDERR_E_UNKNOWNGROUP pguidCmdGroup inte är NULL men anger inte en identifierad kommandogrupp
OLECMDERR_E_NOTSUPPORTED nCmdID känns inte igen som ett giltigt kommando i gruppen pguidCmdGroup
OLECMDERR_DISABLED Kommandot som identifieras av nCmdID är inaktiverat och kan inte köras
OLECMDERR_NOHELP Anroparen bad om hjälp med kommandot som identifieras av nCmdID men ingen hjälp är tillgänglig
OLECMDERR_CANCELED Användaren avbröt körningen

Anmärkningar

COleCmdUI kan användas för att aktivera, uppdatera och ange andra egenskaper för DocObject-användargränssnittskommandon. När kommandona har initierats kan du köra dem med OnExecOleCmd.

Ramverket anropar funktionen innan du försöker översätta och skicka ett OLE-dokumentkommando. Du behöver inte åsidosätta den här funktionen för att hantera ole-standarddokumentkommandon, men du måste ange en åsidosättning för den här funktionen om du vill hantera dina egna anpassade kommandon eller hantera kommandon som accepterar parametrar eller returnerar resultat.

De flesta kommandon tar inte argument eller returnerar värden. För de flesta kommandon kan anroparen skicka NULLs för pvarargIn och pvarargOut. För kommandon som förväntar sig indatavärden kan anroparen deklarera och initiera en VARIANTARG-variabel och skicka en pekare till variabeln i pvarargIn. För kommandon som kräver ett enda värde kan argumentet lagras direkt i VARIANTARG och skickas till funktionen. Flera argument måste paketeras i VARIANTARG med någon av de typer som stöds (till exempel IDispatch och SAFEARRAY ).

Om ett kommando returnerar argument förväntas anroparen deklarera en VARIANTARG, initiera den till VT_EMPTY och skicka adressen i pvarargOut. Om ett kommando returnerar ett enda värde kan objektet lagra värdet direkt i pvarargOut. Flera utdatavärden måste paketeras på något sätt som är lämpligt för VARIANTARG.

Basklassimplementeringen av den här funktionen visar de OLE_COMMAND_MAP strukturer som är associerade med kommandomålet och försöker skicka kommandot till en lämplig hanterare. Basklassimplementeringen fungerar bara med kommandon som inte accepterar argument eller returnerar värden. Om du behöver hantera kommandon som accepterar argument eller returnerar värden måste du åsidosätta den här funktionen och arbeta med pvarargIn och pvarargOut parametrar själv.

COleServerDoc::OnFrameWindowActivate

Ramverket anropar den här funktionen när containerprogrammets ramfönster aktiveras eller inaktiveras.

virtual void OnFrameWindowActivate(BOOL bActivate);

Parametrar

bActivate
Anger om ramfönstret ska aktiveras eller inaktiveras.

Anmärkningar

Standardimplementeringen avbryter alla hjälplägen som ramfönstret kan vara i. Åsidosätt den här funktionen om du vill utföra särskild bearbetning när ramfönstret aktiveras eller inaktiveras.

Mer information finns i artikeln Aktivering.

COleServerDoc::OnGetEmbeddedItem

Anropas av ramverket när ett containerprogram anropar serverprogrammet för att skapa eller redigera ett inbäddat objekt.

virtual COleServerItem* OnGetEmbeddedItem() = 0;

Returvärde

En pekare till ett objekt som representerar hela dokumentet. NULL om åtgärden misslyckades.

Anmärkningar

Det finns ingen standardimplementering. Du måste åsidosätta den här funktionen för att returnera ett objekt som representerar hela dokumentet. Det här returvärdet ska vara ett objekt i en COleServerItem-derived-klass.

COleServerDoc::OnReactivateAndUndo

Ramverket anropar den här funktionen när användaren väljer att ångra ändringar som gjorts i ett objekt som har aktiverats, ändrats och därefter inaktiverats.

virtual BOOL OnReactivateAndUndo();

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Standardimplementeringen gör ingenting förutom att returnera FALSE för att indikera fel.

Åsidosätt den här funktionen om programmet stöder ångra. Vanligtvis utför du ångra-åtgärden och aktiverar sedan objektet genom att anropa ActivateInPlace. Om containerprogrammet skrivs med Microsoft Foundation-klassbiblioteket anropar du COleClientItem::ReactivateAndUndo gör att den här funktionen anropas.

COleServerDoc::OnResizeBorder

Ramverket anropar den här funktionen när containerprogrammets ramfönster ändrar storlek.

virtual void OnResizeBorder(
    LPCRECT lpRectBorder,
    LPOLEINPLACEUIWINDOW lpUIWindow,
    BOOL bFrame);

Parametrar

lpRectBorder
Pekare till en RECT struktur eller ett CRect objekt som anger koordinaterna för kantlinjen.

lpUIWindow
Pekare till ett objekt i klassen IOleInPlaceUIWindow som äger den aktuella redigeringssessionen på plats.

bFrame
SANT om lpUIWindow pekar på containerprogrammets ramfönster på den översta nivån eller FALSE om lpUIWindow pekar på containerprogrammets ramfönster på dokumentnivå.

Anmärkningar

Den här funktionen ändrar storlek på och justerar verktygsfält och andra användargränssnittselement i enlighet med den nya fönsterstorleken.

Mer information finns i IOleInPlaceUIWindow i Windows SDK.

Det här är ett avancerat åsidosättande.

COleServerDoc::OnSetHostNames

Anropas av ramverket när containern anger eller ändrar värdnamnen för det här dokumentet.

virtual void OnSetHostNames(
    LPCTSTR lpszHost,
    LPCTSTR lpszHostObj);

Parametrar

lpszHost
Pekare till en sträng som anger namnet på containerprogrammet.

lpszHostObj
Pekare till en sträng som anger containerns namn på dokumentet.

Anmärkningar

Standardimplementeringen ändrar dokumentrubriken för alla vyer som refererar till det här dokumentet.

Åsidosätt den här funktionen om ditt program anger rubrikerna via en annan mekanism.

COleServerDoc::OnSetItemRects

Ramverket anropar den här funktionen för att placera fönstret för redigeringsramen på plats i containerprogrammets ramfönster.

virtual void OnSetItemRects(
    LPCRECT lpPosRect,
    LPCRECT lpClipRect);

Parametrar

lpPosRect
Pekare mot en RECT struktur eller ett CRect objekt som anger ramfönstrets position på plats i förhållande till containerprogrammets klientområde.

lpClipRect
Pekare till en RECT struktur eller ett CRect objekt som anger ramfönstrets urklippsrektangel på plats i förhållande till containerprogrammets klientområde.

Anmärkningar

Åsidosätt den här funktionen för att uppdatera vyns zoomfaktor om det behövs.

Den här funktionen anropas vanligtvis som svar på ett RequestPositionChange-anrop, även om den kan anropas när som helst av containern för att begära en positionsändring för objektet på plats.

COleServerDoc::OnShowControlBars

Ramverket anropar den här funktionen för att visa eller dölja serverprogrammets kontrollstaplar som är associerade med ramfönstret som identifieras av pFrameWnd.

virtual void OnShowControlBars(
    CFrameWnd* pFrameWnd,
    BOOL bShow);

Parametrar

pFrameWnd
Pekare till ramfönstret vars kontrollstaplar ska döljas eller visas.

bShow
Avgör om kontrollstaplar visas eller döljs.

Anmärkningar

Standardimplementeringen räknar upp alla kontrollstaplar som ägs av ramfönstret och döljer eller visar dem.

COleServerDoc::OnShowDocument

Ramverket anropar funktionen OnShowDocument när serverdokumentet måste döljas eller visas.

virtual void OnShowDocument(BOOL bShow);

Parametrar

bShow
Anger om användargränssnittet till dokumentet ska visas eller döljas.

Anmärkningar

Om bShow är TRUE aktiverar standardimplementeringen serverprogrammet om det behövs och gör att containerprogrammet bläddrar i fönstret så att objektet visas. Om bShow är FALSE inaktiverar standardimplementeringen objektet via ett anrop till OnDeactivateoch förstör eller döljer sedan alla ramfönster som har skapats för dokumentet, förutom det första. Om inga synliga dokument finns kvar döljer standardimplementeringen serverprogrammet.

COleServerDoc::OnUpdateDocument

Anropas av ramverket när du sparar ett dokument som är ett inbäddat objekt i ett sammansatt dokument.

virtual BOOL OnUpdateDocument();

Returvärde

Nonzero om dokumentet har uppdaterats. annars 0.

Anmärkningar

Standardimplementeringen anropar COleServerDoc::NotifySaved och COleServerDoc::SaveEmbedding medlemsfunktioner och markerar sedan dokumentet som rent. Åsidosätt den här funktionen om du vill utföra särskild bearbetning när du uppdaterar ett inbäddat objekt.

COleServerDoc::RequestPositionChange

Anropa den här medlemsfunktionen för att låta containerprogrammet ändra objektets position.

void RequestPositionChange(LPCRECT lpPosRect);

Parametrar

lpPosRect
Pekare till en RECT struktur eller ett CRect objekt som innehåller objektets nya position.

Anmärkningar

Den här funktionen kallas vanligtvis (tillsammans med UpdateAllItems) när data i ett aktivt objekt på plats har ändrats. Efter det här anropet kan containern eller kanske inte utföra ändringen genom att anropa OnSetItemRects. Den resulterande positionen kan skilja sig från den som begärs.

COleServerDoc::SaveEmbedding

Anropa den här funktionen för att be containerprogrammet att spara det inbäddade objektet.

void SaveEmbedding();

Anmärkningar

Den här funktionen anropas automatiskt från OnUpdateDocument. Observera att den här funktionen gör att objektet uppdateras på disken, så det anropas vanligtvis endast som ett resultat av en specifik användaråtgärd.

COleServerDoc::ScrollContainerBy

Anropa funktionen ScrollContainerBy medlem för att rulla containerdokumentet efter mängden i bildpunkter som anges av sizeScroll.

BOOL ScrollContainerBy(CSize sizeScroll);

Parametrar

storlekRegistrera
Anger hur långt containerdokumentet ska rullas.

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Positiva värden indikerar rullning nedåt och till höger; negativa värden indikerar rullning uppåt och till vänster.

COleServerDoc::UpdateAllItems

Anropa den här funktionen för att meddela alla länkade objekt som är anslutna till dokumentet att dokumentet har ändrats.

void UpdateAllItems(
    COleServerItem* pSender,
    LPARAM lHint = 0L,
    CObject* pHint = NULL,
    DVASPECT nDrawAspect = DVASPECT_CONTENT);

Parametrar

pSender
Pekare till det objekt som ändrade dokumentet eller NULL om alla objekt ska uppdateras.

lHint
Innehåller information om ändringen.

pHint
Pekare till ett objekt som lagrar information om ändringen.

nDrawAspect
Avgör hur objektet ska ritas. Det här är ett värde från DVASPECT-uppräkningen. Den här parametern kan ha något av följande värden:

  • DVASPECT_CONTENT Objekt representeras på ett sådant sätt att det kan visas som ett inbäddat objekt i containern.

  • DVASPECT_THUMBNAIL Objektet återges i en "miniatyrbild" så att det kan visas i ett webbverktyg.

  • DVASPECT_ICON Objekt representeras av en ikon.

  • DVASPECT_DOCPRINT objekt representeras som om det skrevs ut med hjälp av kommandot Skriv ut på arkiv-menyn.

Anmärkningar

Du anropar vanligtvis den här funktionen när användaren har ändrat serverdokumentet. Om ett OLE-objekt är länkat till dokumentet med en automatisk länk uppdateras objektet så att det återspeglar ändringarna. I containerprogram som skrivits med Microsoft Foundation-klassbiblioteket anropas OnChange medlemsfunktion för COleClientItem.

Den här funktionen anropar funktionen OnUpdate medlem för vart och ett av dokumentets objekt förutom det sändande objektet och skickar pHint, lHintoch nDrawAspect. Använd dessa parametrar för att skicka information till objekten om de ändringar som gjorts i dokumentet. Du kan koda information med hjälp av lHint eller så kan du definiera en CObject-härledd klass för att lagra information om ändringarna och skicka ett objekt i den klassen med hjälp av pHint. Åsidosätt funktionen OnUpdate medlem i klassen COleServerItem-derived för att optimera uppdateringen av varje objekt beroende på om presentationen har ändrats.

Se även

HIERSVR-exempel på MFC-
COleLinkingDoc Class
hierarkidiagram
COleDocument Class
COleLinkingDoc Class
COleTemplateServer Class