Classe COleServerDoc

Classe di base per i documenti del server OLE.

Sintassi

class AFX_NOVTABLE COleServerDoc : public COleLinkingDoc

Membri

Costruttori pubblici

Nome Descrizione
COleServerDoc::COleServerDoc Costruisce un oggetto COleServerDoc.

Metodi pubblici

Nome Descrizione
COleServerDoc::ActivateDocObject Attiva il documento DocObject associato.
COleServerDoc::ActivateInPlace Attiva il documento per la modifica sul posto.
COleServerDoc::D eactivateAndUndo Disattiva l'interfaccia utente del server.
COleServerDoc::D iscardUndoState Rimuove le informazioni sullo stato di annullamento.
COleServerDoc::GetClientSite Recupera un puntatore all'interfaccia sottostante IOleClientSite .
COleServerDoc::GetEmbeddedItem Restituisce un puntatore a un elemento che rappresenta l'intero documento.
COleServerDoc::GetItemClipRect Restituisce il rettangolo di ritaglio corrente per la modifica sul posto.
COleServerDoc::GetItemPosition Restituisce il rettangolo di posizione corrente, relativo all'area client dell'applicazione contenitore, per la modifica sul posto.
COleServerDoc::GetZoomFactor Restituisce il fattore di zoom in pixel.
COleServerDoc::IsDocObject Determina se il documento è un DocObject.
COleServerDoc::IsEmbedded Indica se il documento è incorporato in un documento contenitore o se è in esecuzione autonomo.
COleServerDoc::IsInPlaceActive Restituisce TRUE se l'elemento è attualmente attivato.
COleServerDoc::NotifyChanged Notifica ai contenitori che l'utente ha modificato il documento.
COleServerDoc::NotifyClosed Notifica ai contenitori che l'utente ha chiuso il documento.
COleServerDoc::NotifyRename Notifica ai contenitori che l'utente ha rinominato il documento.
COleServerDoc::NotifySaved Notifica ai contenitori che l'utente ha salvato il documento.
COleServerDoc::OnDeactivate Chiamato dal framework quando l'utente disattiva un elemento attivato sul posto.
COleServerDoc::OnDeactivateUI Chiamato dal framework per eliminare definitivamente i controlli e altri elementi dell'interfaccia utente creati per l'attivazione sul posto.
COleServerDoc::OnDocWindowActivate Chiamato dal framework quando la finestra cornice del documento del contenitore viene attivata o disattivata.
COleServerDoc::OnResizeBorder Chiamato dal framework quando la finestra cornice o la finestra del documento dell'applicazione contenitore viene ridimensionata.
COleServerDoc::OnShowControlBars Chiamato dal framework per visualizzare o nascondere le barre di controllo per la modifica sul posto.
COleServerDoc::OnUpdateDocument Chiamato dal framework quando viene salvato un documento del server che è un elemento incorporato, aggiornando la copia dell'elemento del contenitore.
COleServerDoc::RequestPositionChange Modifica la posizione del frame di modifica sul posto.
COleServerDoc::SaveEmbedding Indica all'applicazione contenitore di salvare il documento.
COleServerDoc::ScrollContainerBy Scorre il documento contenitore.
COleServerDoc::UpdateAllItems Notifica ai contenitori che l'utente ha modificato il documento.

Metodi protetti

Nome Descrizione
COleServerDoc::CreateInPlaceFrame Chiamato dal framework per creare una finestra cornice per la modifica sul posto.
COleServerDoc::D estroyInPlaceFrame Chiamato dal framework per distruggere una finestra cornice per la modifica sul posto.
COleServerDoc::GetDocObjectServer Eseguire l'override di questa funzione per creare un nuovo CDocObjectServer oggetto e indicare che questo documento è un contenitore DocObject.
COleServerDoc::OnClose Chiamato dal framework quando un contenitore richiede di chiudere il documento.
COleServerDoc::OnExecOleCmd Esegue un comando specificato o visualizza la Guida per il comando.
COleServerDoc::OnFrameWindowActivate Chiamato dal framework quando la finestra cornice del contenitore viene attivata o disattivata.
COleServerDoc::OnGetEmbeddedItem Chiamato per ottenere un COleServerItem oggetto che rappresenta l'intero documento, utilizzato per ottenere un elemento incorporato. Implementazione richiesta.
COleServerDoc::OnReactivateAndUndo Chiamato dal framework per annullare le modifiche apportate durante la modifica sul posto.
COleServerDoc::OnSetHostNames Chiamato dal framework quando un contenitore imposta il titolo della finestra per un oggetto incorporato.
COleServerDoc::OnSetItemRects Chiamato dal framework per posizionare la finestra cornice di modifica sul posto all'interno della finestra dell'applicazione contenitore.
COleServerDoc::OnShowDocument Chiamato dal framework per visualizzare o nascondere il documento.

Osservazioni:

Un documento del server può contenere oggetti COleServerItem , che rappresentano l'interfaccia server per elementi incorporati o collegati. Quando un'applicazione server viene avviata da un contenitore per modificare un elemento incorporato, l'elemento viene caricato come documento server; l'oggetto COleServerDoc contiene un COleServerItem solo oggetto, costituito dall'intero documento. Quando un'applicazione server viene avviata da un contenitore per modificare un elemento collegato, un documento esistente viene caricato dal disco; Una parte del contenuto del documento è evidenziata per indicare l'elemento collegato.

COleServerDoc gli oggetti possono contenere anche elementi della classe COleClientItem . In questo modo è possibile creare applicazioni container-server. Il framework fornisce funzioni per archiviare correttamente gli COleClientItem elementi durante la manutenzione degli COleServerItem oggetti.

Se l'applicazione server non supporta i collegamenti, un documento del server conterrà sempre un solo elemento del server, che rappresenta l'intero oggetto incorporato come documento. Se l'applicazione server supporta i collegamenti, deve creare un elemento del server ogni volta che una selezione viene copiata negli Appunti.

Per usare COleServerDoc, derivare una classe da essa e implementare la funzione membro OnGetEmbeddedItem , che consente al server di supportare gli elementi incorporati. Derivare una classe da COleServerItem per implementare gli elementi nei documenti e restituire oggetti di tale classe da OnGetEmbeddedItem.

Per supportare gli elementi collegati, COleServerDoc fornisce la funzione membro OnGetLinkedItem . È possibile usare l'implementazione predefinita o eseguirne l'override se si ha il proprio modo di gestire gli elementi del documento.

È necessaria una classe derivata da un COleServerDocsolo per ogni tipo di documento del server supportato dall'applicazione. Ad esempio, se l'applicazione server supporta fogli di lavoro e grafici, sono necessarie due COleServerDocclassi derivate da .

Per altre informazioni sui server, vedere l'articolo Server: Implementazione di un server.

Gerarchia di ereditarietà

CObject

CCmdTarget

Cdocument

COleDocument

COleLinkingDoc

COleServerDoc

Requisiti

Intestazione: afxole.h

COleServerDoc::ActivateDocObject

Attiva il documento DocObject associato.

void ActivateDocObject();

Osservazioni:

Per impostazione predefinita, COleServerDoc non supporta documenti attivi (detti anche DocObjects). Per abilitare questo supporto, vedere GetDocObjectServer e classe CDocObjectServer.

COleServerDoc::ActivateInPlace

Attiva l'elemento per la modifica sul posto.

BOOL ActivateInPlace();

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario, 0, che indica che l'elemento è completamente aperto.

Osservazioni:

Questa funzione esegue tutte le operazioni necessarie per l'attivazione sul posto. Crea una finestra cornice sul posto, la attiva e la ridimensiona per l'elemento, imposta menu condivisi e altri controlli, scorre l'elemento in visualizzazione e imposta lo stato attivo sulla finestra cornice sul posto.

Questa funzione viene chiamata dall'implementazione predefinita di COleServerItem::OnShow. Chiamare questa funzione se l'applicazione supporta un altro verbo per l'attivazione sul posto , ad esempio Play.

COleServerDoc::COleServerDoc

Costruisce un COleServerDoc oggetto senza connettersi alle DLL di sistema OLE.

COleServerDoc();

Osservazioni:

È necessario chiamare COleLinkingDoc::Register per aprire le comunicazioni con OLE. Se si usa COleTemplateServer nell'applicazione, COleLinkingDoc::Register viene chiamato dall'implementazione COleLinkingDocdi OnNewDocument, OnOpenDocumente OnSaveDocument.

COleServerDoc::CreateInPlaceFrame

Il framework chiama questa funzione per creare una finestra cornice per la modifica sul posto.

virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);

Parametri

pParentWnd
Puntatore alla finestra padre dell'applicazione contenitore.

Valore restituito

Puntatore alla finestra cornice sul posto o NULL in caso di esito negativo.

Osservazioni:

L'implementazione predefinita usa le informazioni specificate nel modello di documento per creare il frame. La vista utilizzata è la prima visualizzazione creata per il documento. Questa visualizzazione viene temporaneamente scollegata dal frame originale e collegata al frame appena creato.

Si tratta di un override avanzato.

COleServerDoc::D eactivateAndUndo

Chiamare questa funzione se l'applicazione supporta Annulla e l'utente sceglie Annulla dopo l'attivazione di un elemento, ma prima di modificarlo.

BOOL DeactivateAndUndo();

Valore restituito

Diverso da zero in caso di esito positivo; in caso contrario, 0.

Osservazioni:

Se l'applicazione contenitore viene scritta usando la libreria di classi Microsoft Foundation, la chiamata a questa funzione determina la chiamata di COleClientItem::OnDeactivateAndUndo , che disattiva l'interfaccia utente del server.

COleServerDoc::D estroyInPlaceFrame

Il framework chiama questa funzione per eliminare definitivamente una finestra cornice sul posto e restituire la finestra del documento dell'applicazione server al relativo stato prima dell'attivazione sul posto.

virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);

Parametri

pFrameWnd
Puntatore alla finestra cornice sul posto da distruggere.

Osservazioni:

Si tratta di un override avanzato.

COleServerDoc::D iscardUndoState

Se l'utente esegue un'operazione di modifica che non può essere annullata, chiamare questa funzione per forzare l'applicazione contenitore a rimuovere le informazioni sullo stato di annullamento.

BOOL DiscardUndoState();

Valore restituito

Diverso da zero in caso di esito positivo; in caso contrario, 0.

Osservazioni:

Questa funzione viene fornita in modo che i server che supportano Undo possano liberare risorse che altrimenti verrebbero utilizzate da informazioni sullo stato di annullamento che non possono essere usate.

COleServerDoc::GetClientSite

Recupera un puntatore all'interfaccia sottostante IOleClientSite .

LPOLECLIENTSITE GetClientSite() const;

Valore restituito

Recupera un puntatore all'interfaccia IOleClientSite sottostante.

COleServerDoc::GetDocObjectServer

Eseguire l'override di questa funzione per creare un nuovo CDocObjectServer elemento e restituirvi un puntatore.

virtual CDocObjectServer* GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite);

Parametri

pDocSite
Puntatore all'interfaccia IOleDocumentSite che connetterà il documento al server.

Valore restituito

Puntatore a un oggetto CDocObjectServer; NULL se l'operazione non è riuscita.

Osservazioni:

Quando viene attivato un server DocObject, la restituzione di un puntatore non NULL indica che il client può supportare DocObjects. L'implementazione predefinita restituisce NULL.

Un'implementazione tipica per un documento che supporta DocObjects allocherà semplicemente un nuovo CDocObjectServer oggetto e lo restituirà al chiamante. Ad esempio:

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

COleServerDoc::GetEmbeddedItem

Chiamare questa funzione per ottenere un puntatore a un elemento che rappresenta l'intero documento.

COleServerItem* GetEmbeddedItem();

Valore restituito

Puntatore a un elemento che rappresenta l'intero documento; NULL se l'operazione non è riuscita.

Osservazioni:

Chiama COleServerDoc::OnGetEmbeddedItem, una funzione virtuale senza implementazione predefinita.

COleServerDoc::GetItemClipRect

Chiamare la GetItemClipRect funzione membro per ottenere le coordinate del rettangolo di ritaglio dell'elemento che viene modificato sul posto.

void GetItemClipRect(LPRECT lpClipRect) const;

Parametri

lpClipRect
Puntatore a una RECT struttura o a un CRect oggetto per ricevere le coordinate del rettangolo di ritaglio dell'elemento.

Osservazioni:

Le coordinate sono in pixel rispetto all'area client della finestra dell'applicazione contenitore.

Il disegno non deve essere presente all'esterno del rettangolo di ritaglio. In genere, il disegno è limitato automaticamente. Utilizzare questa funzione per determinare se l'utente ha eseguito lo scorrimento all'esterno della parte visibile del documento; in tal caso, scorrere il documento contenitore in base alle esigenze tramite una chiamata a ScrollContainerBy.

COleServerDoc::GetItemPosition

Chiamare la GetItemPosition funzione membro per ottenere le coordinate dell'elemento da modificare sul posto.

void GetItemPosition(LPRECT lpPosRect) const;

Parametri

lpPosRect
Puntatore a una RECT struttura o a un CRect oggetto per ricevere le coordinate dell'elemento.

Osservazioni:

Le coordinate sono in pixel rispetto all'area client della finestra dell'applicazione contenitore.

La posizione dell'elemento può essere confrontata con il rettangolo di ritaglio corrente per determinare la misura in cui l'elemento è visibile (o non visibile) sullo schermo.

COleServerDoc::GetZoomFactor

La GetZoomFactor funzione membro determina il "fattore di zoom" di un elemento attivato per la modifica sul posto.

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

Parametri

lpSizeNum
Puntatore a un oggetto della classe CSize che conterrà il numeratore del fattore di zoom. Può essere NULL.

lpSizeDenom
Puntatore a un oggetto della classe CSize che conterrà il denominatore del fattore di zoom. Può essere NULL.

lpPosRect
Puntatore a un oggetto della classe CRect che descrive la nuova posizione dell'elemento. Se questo argomento è NULL, la funzione usa la posizione corrente dell'elemento.

Valore restituito

Diverso da zero se l'elemento viene attivato per la modifica sul posto e il relativo fattore di zoom è diverso dal 100% (1:1); in caso contrario, 0.

Osservazioni:

Il fattore di zoom, in pixel, è la proporzione delle dimensioni dell'elemento nell'extent corrente. Se l'applicazione contenitore non ha impostato l'extent dell'elemento, viene usato il relativo extent naturale (come determinato da COleServerItem::OnGetExtent).

La funzione imposta i primi due argomenti sul numeratore e sul denominatore del "fattore di zoom" dell'elemento. Se l'elemento non viene modificato sul posto, la funzione imposta questi argomenti su un valore predefinito pari al 100% (o 1:1) e restituisce zero. Per altre informazioni, vedere La nota tecnica 40, il ridimensionamento sul posto MFC/OLE e lo zoom.

COleServerDoc::IsDocObject

Determina se il documento è un DocObject.

BOOL IsDocObject() const;

Valore restituito

TRUE se il documento è un DocObject; altrimenti FAL edizione Standard.

COleServerDoc::IsEmbedded

Chiamare la IsEmbedded funzione membro per determinare se il documento rappresenta un oggetto incorporato in un contenitore.

BOOL IsEmbedded() const;

Valore restituito

Diverso da zero se l'oggetto COleServerDoc è un documento che rappresenta un oggetto incorporato in un contenitore; in caso contrario, 0.

Osservazioni:

Un documento caricato da un file non è incorporato, anche se può essere modificato da un'applicazione contenitore come collegamento. Un documento incorporato in un documento contenitore viene considerato incorporato.

COleServerDoc::IsInPlaceActive

Chiamare la IsInPlaceActive funzione membro per determinare se l'elemento è attualmente nello stato attivo sul posto.

BOOL IsInPlaceActive() const;

Valore restituito

Diverso da zero se l'oggetto COleServerDoc è attivo sul posto; in caso contrario, 0.

COleServerDoc::NotifyChanged

Chiamare questa funzione per notificare a tutti gli elementi collegati connessi al documento che il documento è stato modificato.

void NotifyChanged();

Osservazioni:

In genere, questa funzione viene chiamata dopo che l'utente modifica un attributo globale, ad esempio le dimensioni del documento del server. Se un elemento OLE è collegato al documento con un collegamento automatico, l'elemento viene aggiornato in modo da riflettere le modifiche. Nelle applicazioni contenitore scritte con microsoft Foundation Class Library viene chiamata la funzione membro OnChange di COleClientItem .

Nota

Questa funzione è inclusa per la compatibilità con OLE 1. Le nuove applicazioni devono usare UpdateAllItems.

COleServerDoc::NotifyClosed

Chiamare questa funzione per notificare ai contenitori che il documento è stato chiuso.

void NotifyClosed();

Osservazioni:

Quando l'utente sceglie il comando Chiudi dal menu File, NotifyClosed viene chiamato dall'implementazione COleServerDocdella funzione membro OnCloseDocument . Nelle applicazioni contenitore scritte con microsoft Foundation Class Library viene chiamata la funzione membro OnChange di COleClientItem .

COleServerDoc::NotifyRename

Chiamare questa funzione dopo che l'utente rinomina il documento del server.

void NotifyRename(LPCTSTR lpszNewName);

Parametri

lpszNewName
Puntatore a una stringa che specifica il nuovo nome del documento del server; si tratta in genere di un percorso completo.

Osservazioni:

Quando l'utente sceglie il comando Salva con nome dal menu File, NotifyRename viene chiamato dall'implementazione COleServerDocdella funzione membro OnSaveDocument . Questa funzione notifica alle DLL di sistema OLE, che a loro volta notificano ai contenitori. Nelle applicazioni contenitore scritte con microsoft Foundation Class Library viene chiamata la funzione membro OnChange di COleClientItem .

COleServerDoc::NotifySaved

Chiamare questa funzione dopo che l'utente salva il documento del server.

void NotifySaved();

Osservazioni:

Quando l'utente sceglie il comando Salva dal menu File, NotifySaved viene chiamato dall'implementazione COleServerDocdi OnSaveDocument. Questa funzione notifica alle DLL di sistema OLE, che a loro volta notificano ai contenitori. Nelle applicazioni contenitore scritte con microsoft Foundation Class Library viene chiamata la funzione membro OnChange di COleClientItem .

COleServerDoc::OnClose

Chiamato dal framework quando un contenitore richiede la chiusura del documento del server.

virtual void OnClose(OLECLOSE dwCloseOption);

Parametri

dwCloseOption
Valore dell'enumerazione OLECLO edizione Standard. Per il parametro è possibile specificare uno dei valori riportati di seguito:

  • OLECLO edizione Standard_SAVEIFDIRTY Il file viene salvato se è stato modificato.

  • OLECLO edizione Standard_NOSAVE Il file viene chiuso senza essere salvato.

  • OLECLO edizione Standard_PROMPTSAVE Se il file è stato modificato, all'utente viene richiesto di salvarlo.

Osservazioni:

L'implementazione predefinita chiama CDocument::OnCloseDocument.

Per altre informazioni e valori aggiuntivi, vedere OLECLO edizione Standard in Windows SDK.

COleServerDoc::OnDeactivate

Chiamato dal framework quando l'utente disattiva un elemento incorporato o collegato attualmente attivo sul posto.

virtual void OnDeactivate();

Osservazioni:

Questa funzione ripristina lo stato originale dell'interfaccia utente dell'applicazione contenitore e elimina tutti i menu e altri controlli creati per l'attivazione sul posto.

Le informazioni sullo stato di annullamento devono essere rilasciate in modo incondizionato a questo punto.

Per altre informazioni, vedere l'articolo Attivazione.

COleServerDoc::OnDeactivateUI

Chiamato quando l'utente disattiva un elemento attivato sul posto.

virtual void OnDeactivateUI(BOOL bUndoable);

Parametri

bUndoable
Specifica se le modifiche di modifica possono essere annullate.

Osservazioni:

Questa funzione ripristina lo stato originale dell'interfaccia utente dell'applicazione contenitore, nascondendo eventuali menu e altri controlli creati per l'attivazione sul posto.

Il framework imposta sempre bUndoable su FAL edizione Standard. Se il server supporta l'annullamento ed è presente un'operazione che può essere annullata, chiamare l'implementazione della classe base con bUndoable impostato su TRUE.

COleServerDoc::OnDocWindowActivate

Il framework chiama questa funzione per attivare o disattivare una finestra del documento per la modifica sul posto.

virtual void OnDocWindowActivate(BOOL bActivate);

Parametri

bActivate
Specifica se la finestra del documento deve essere attivata o disattivata.

Osservazioni:

L'implementazione predefinita rimuove o aggiunge gli elementi dell'interfaccia utente a livello di frame in base alle esigenze. Eseguire l'override di questa funzione se si desidera eseguire azioni aggiuntive quando il documento contenente l'elemento viene attivato o disattivato.

Per altre informazioni, vedere l'articolo Attivazione.

COleServerDoc::OnExecOleCmd

Il framework chiama questa funzione per eseguire un comando specificato o visualizzare la Guida per il comando.

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

Parametri

pguidCmdGroup
Puntatore a un GUID che identifica un set di comandi. Può essere NULL per indicare il gruppo di comandi predefinito.

nCmdID
Comando da eseguire. Deve trovarsi nel gruppo identificato da pguidCmdGroup.

nCmdExecOut
Il modo in cui l'oggetto deve eseguire il comando, uno o più dei valori seguenti dall'enumerazione OLECMDEXECOPT:

OLECMDEXECOPT_DODEFAULT

OLECMDEXECOPT_PROMPTUedizione Standard R

OLECMDEXECOPT_DONTPROMPTUedizione Standard R

OLECMDEXECOPT_SHOWHELP

pvarargIn
Puntatore a un valore VARIANTARG contenente argomenti di input per il comando. Può essere NULL.

pvarargOut
Puntatore a un valore VARIANTARG per ricevere i valori restituiti dall'output dal comando . Può essere NULL.

Valore restituito

Restituisce S_OK se ha esito positivo; in caso contrario, uno dei codici di errore seguenti:

Valore Descrizione
E_UNEXPECTED Si è verificato un errore imprevisto
E_FAIL Si è verificato un errore
E_NOTIMPL Indica che MFC deve tentare di tradurre e inviare il comando
OLECMDERR_E_UNKNOWNGROUP pguidCmdGroup non è NULL, ma non specifica un gruppo di comandi riconosciuto
OLECMDERR_E_NOTSUPPORTED nCmdID non è riconosciuto come comando valido nel gruppo pguidCmdGroup
OLECMDERR_DISABLED Il comando identificato da nCmdID è disabilitato e non può essere eseguito
OLECMDERR_NOHELP Il chiamante ha chiesto assistenza sul comando identificato da nCmdID , ma non è disponibile alcuna guida
OLECMDERR_CANCELED L'utente ha annullato l'esecuzione

Osservazioni:

COleCmdUI può essere usato per abilitare, aggiornare e impostare altre proprietà dei comandi dell'interfaccia utente docObject. Dopo aver inizializzato i comandi, è possibile eseguirli con OnExecOleCmd.

Il framework chiama la funzione prima di tentare di tradurre e inviare un comando di documento OLE. Non è necessario eseguire l'override di questa funzione per gestire i comandi standard dei documenti OLE, ma è necessario fornire un override a questa funzione se si desidera gestire comandi personalizzati o gestire comandi che accettano parametri o restituiscono risultati.

La maggior parte dei comandi non accetta argomenti o restituisce valori. Per la maggior parte dei comandi, il chiamante può passare valori NULL per pvarargIn e pvarargOut. Per i comandi che prevedono valori di input, il chiamante può dichiarare e inizializzare una variabile VARIANTARG e passare un puntatore alla variabile in pvarargIn. Per i comandi che richiedono un singolo valore, l'argomento può essere archiviato direttamente in VARIANTARG e passato alla funzione. È necessario inserire più argomenti all'interno di VARIANTARG usando uno dei tipi supportati, ad esempio IDispatch e SAFEARRAY.

Analogamente, se un comando restituisce argomenti, il chiamante deve dichiarare un valore VARIANTARG, inizializzarlo in VT_EMPTY e passarne l'indirizzo in pvarargOut. Se un comando restituisce un singolo valore, l'oggetto può archiviare tale valore direttamente in pvarargOut. Più valori di output devono essere inseriti in un pacchetto in qualche modo appropriati per VARIANTARG.

L'implementazione della classe base di questa funzione illustra le strutture OLE_COMMAND_MAP associate alla destinazione del comando e tenterà di inviare il comando a un gestore appropriato. L'implementazione della classe base funziona solo con i comandi che non accettano argomenti o valori restituiti. Se è necessario gestire i comandi che accettano argomenti o valori restituiti, è necessario eseguire l'override di questa funzione e usare manualmente i parametri pvarargIn e pvarargOut .

COleServerDoc::OnFrameWindowActivate

Il framework chiama questa funzione quando la finestra cornice dell'applicazione contenitore viene attivata o disattivata.

virtual void OnFrameWindowActivate(BOOL bActivate);

Parametri

bActivate
Specifica se la finestra cornice deve essere attivata o disattivata.

Osservazioni:

L'implementazione predefinita annulla tutte le modalità della Guida in cui potrebbe trovarsi la finestra cornice. Eseguire l'override di questa funzione se si desidera eseguire un'elaborazione speciale quando la finestra cornice viene attivata o disattivata.

Per altre informazioni, vedere l'articolo Attivazione.

COleServerDoc::OnGetEmbeddedItem

Chiamato dal framework quando un'applicazione contenitore chiama l'applicazione server per creare o modificare un elemento incorporato.

virtual COleServerItem* OnGetEmbeddedItem() = 0;

Valore restituito

Puntatore a un elemento che rappresenta l'intero documento; NULL se l'operazione non è riuscita.

Osservazioni:

Non vi è nessuna implementazione predefinita. È necessario eseguire l'override di questa funzione per restituire un elemento che rappresenta l'intero documento. Questo valore restituito deve essere un oggetto di una COleServerItemclasse derivata da .

COleServerDoc::OnReactivateAndUndo

Il framework chiama questa funzione quando l'utente sceglie di annullare le modifiche apportate a un elemento attivato sul posto, modificato e successivamente disattivato.

virtual BOOL OnReactivateAndUndo();

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

L'implementazione predefinita non esegue alcuna operazione tranne che restituisce FAL edizione Standard per indicare un errore.

Eseguire l'override di questa funzione se l'applicazione supporta l'annullamento. In genere si esegue l'operazione di annullamento, quindi attivare l'elemento chiamando ActivateInPlace. Se l'applicazione contenitore viene scritta con la libreria di classi Microsoft Foundation, la chiamata COleClientItem::ReactivateAndUndo fa sì che questa funzione venga chiamata.

COleServerDoc::OnResizeBorder

Il framework chiama questa funzione quando le finestre cornice dell'applicazione contenitore cambiano le dimensioni.

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

Parametri

lpRectBorder
Puntatore a una RECT struttura o a un CRect oggetto che specifica le coordinate del bordo.

lpUIWindow
Puntatore a un oggetto della classe IOleInPlaceUIWindow proprietario della sessione di modifica sul posto corrente.

bFrame
TRUE se lpUIWindow punta alla finestra cornice di primo livello dell'applicazione contenitore o FAL edizione Standard se lpUIWindow punta alla finestra cornice a livello di documento dell'applicazione contenitore.

Osservazioni:

Questa funzione ridimensiona e regola le barre degli strumenti e altri elementi dell'interfaccia utente in base alle nuove dimensioni della finestra.

Per altre informazioni, vedere IOleInPlaceUIWindow in Windows SDK.

Si tratta di un override avanzato.

COleServerDoc::OnSetHostNames

Chiamato dal framework quando il contenitore imposta o modifica i nomi host per questo documento.

virtual void OnSetHostNames(
    LPCTSTR lpszHost,
    LPCTSTR lpszHostObj);

Parametri

lpszHost
Puntatore a una stringa che specifica il nome dell'applicazione contenitore.

lpszHostObj
Puntatore a una stringa che specifica il nome del contenitore per il documento.

Osservazioni:

L'implementazione predefinita modifica il titolo del documento per tutte le visualizzazioni che fanno riferimento a questo documento.

Eseguire l'override di questa funzione se l'applicazione imposta i titoli tramite un meccanismo diverso.

COleServerDoc::OnSetItemRects

Il framework chiama questa funzione per posizionare la finestra cornice di modifica sul posto all'interno della finestra cornice dell'applicazione contenitore.

virtual void OnSetItemRects(
    LPCRECT lpPosRect,
    LPCRECT lpClipRect);

Parametri

lpPosRect
Puntatore a una RECT struttura o a un CRect oggetto che specifica la posizione della finestra cornice sul posto rispetto all'area client dell'applicazione contenitore.

lpClipRect
Puntatore a una RECT struttura o a un CRect oggetto che specifica il rettangolo di ritaglio della finestra cornice sul posto rispetto all'area client dell'applicazione contenitore.

Osservazioni:

Eseguire l'override di questa funzione per aggiornare il fattore di zoom della visualizzazione, se necessario.

Questa funzione viene in genere chiamata in risposta a una RequestPositionChange chiamata, anche se può essere chiamata in qualsiasi momento dal contenitore per richiedere una modifica della posizione per l'elemento sul posto.

COleServerDoc::OnShowControlBars

Il framework chiama questa funzione per mostrare o nascondere le barre di controllo dell'applicazione server associate alla finestra cornice identificata da pFrameWnd.

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

Parametri

pFrameWnd
Puntatore alla finestra cornice le cui barre di controllo devono essere nascoste o visualizzate.

bShow
Determina se le barre di controllo vengono visualizzate o nascoste.

Osservazioni:

L'implementazione predefinita enumera tutte le barre di controllo di proprietà di tale finestra cornice e le nasconde o le mostra.

COleServerDoc::OnShowDocument

Il framework chiama la OnShowDocument funzione quando il documento del server deve essere nascosto o visualizzato.

virtual void OnShowDocument(BOOL bShow);

Parametri

bShow
Specifica se l'interfaccia utente del documento deve essere visualizzata o nascosta.

Osservazioni:

Se bShow è TRUE, l'implementazione predefinita attiva l'applicazione server, se necessario, e fa sì che l'applicazione contenitore scorrono la finestra in modo che l'elemento sia visibile. Se bShow è FAL edizione Standard, l'implementazione predefinita disattiva l'elemento tramite una chiamata a OnDeactivate, quindi elimina o nasconde tutte le finestre cornice create per il documento, ad eccezione del primo. Se non rimangono documenti visibili, l'implementazione predefinita nasconde l'applicazione server.

COleServerDoc::OnUpdateDocument

Chiamato dal framework quando si salva un documento che è un elemento incorporato in un documento composto.

virtual BOOL OnUpdateDocument();

Valore restituito

Diverso da zero se il documento è stato aggiornato correttamente; in caso contrario, 0.

Osservazioni:

L'implementazione predefinita chiama le funzioni membro COleServerDoc::NotifySaved e COleServerDoc::SaveEmbedding e quindi contrassegna il documento come pulito. Eseguire l'override di questa funzione se si desidera eseguire un'elaborazione speciale durante l'aggiornamento di un elemento incorporato.

COleServerDoc::RequestPositionChange

Chiamare questa funzione membro per fare in modo che l'applicazione contenitore modifichi la posizione dell'elemento.

void RequestPositionChange(LPCRECT lpPosRect);

Parametri

lpPosRect
Puntatore a una RECT struttura o a un CRect oggetto contenente la nuova posizione dell'elemento.

Osservazioni:

Questa funzione viene in genere chiamata (in combinazione con UpdateAllItems) quando i dati in un elemento attivo sul posto sono stati modificati. Dopo questa chiamata, il contenitore potrebbe o meno eseguire la modifica chiamando OnSetItemRects. La posizione risultante potrebbe essere diversa da quella richiesta.

COleServerDoc::SaveEmbedding

Chiamare questa funzione per indicare all'applicazione contenitore di salvare l'oggetto incorporato.

void SaveEmbedding();

Osservazioni:

Questa funzione viene chiamata automaticamente da OnUpdateDocument. Si noti che questa funzione fa sì che l'elemento venga aggiornato su disco, quindi viene in genere chiamato solo come risultato di un'azione utente specifica.

COleServerDoc::ScrollContainerBy

Chiamare la ScrollContainerBy funzione membro per scorrere il documento contenitore in base alla quantità, in pixel, indicata da sizeScroll.

BOOL ScrollContainerBy(CSize sizeScroll);

Parametri

sizeScroll
Indica la distanza di scorrimento del documento contenitore.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

I valori positivi indicano lo scorrimento verso il basso e verso destra; i valori negativi indicano lo scorrimento verso l'alto e verso sinistra.

COleServerDoc::UpdateAllItems

Chiamare questa funzione per notificare a tutti gli elementi collegati connessi al documento che il documento è stato modificato.

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

Parametri

pSender
Puntatore all'elemento che ha modificato il documento o NULL se tutti gli elementi devono essere aggiornati.

lHint
Contiene informazioni sulla modifica.

pHint
Puntatore a un oggetto che archivia le informazioni sulla modifica.

nDrawAspect
Determina la modalità di disegno dell'elemento. Si tratta di un valore dell'enumerazione DVASPECT. Per il parametro è possibile specificare uno dei valori riportati di seguito:

  • DVASPECT_CONTENT Item è rappresentato in modo che possa essere visualizzato come oggetto incorporato all'interno del relativo contenitore.

  • DVASPECT_THUMBNAIL viene eseguito il rendering dell'elemento in una rappresentazione di "anteprima" in modo che possa essere visualizzato in uno strumento di esplorazione.

  • DVASPECT_ICON Elemento è rappresentato da un'icona.

  • DVASPECT_DOCPRINT Elemento viene rappresentato come se fosse stampato usando il comando Stampa dal menu File.

Osservazioni:

Questa funzione viene in genere chiamata dopo che l'utente modifica il documento del server. Se un elemento OLE è collegato al documento con un collegamento automatico, l'elemento viene aggiornato in modo da riflettere le modifiche. Nelle applicazioni contenitore scritte con microsoft Foundation Class Library viene chiamata la funzione membro OnChange di COleClientItem .

Questa funzione chiama la OnUpdate funzione membro per ognuno degli elementi del documento, ad eccezione dell'elemento di invio, passando pHint, lHint e nDrawAspect. Utilizzare questi parametri per passare informazioni agli elementi sulle modifiche apportate al documento. È possibile codificare le informazioni usando lHint oppure definire una CObjectclasse derivata da -per archiviare informazioni sulle modifiche e passare un oggetto di tale classe usando pHint. Eseguire l'override della OnUpdate funzione membro nella COleServerItemclasse derivata da per ottimizzare l'aggiornamento di ogni elemento a seconda che la presentazione sia stata modificata.

Vedi anche

HIERSVR di esempio MFC
Classe COleLinkingDoc
Grafico della gerarchia
Classe COleDocument
Classe COleLinkingDoc
Classe COleTemplateServer