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 COleServerDoc
solo 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 COleServerDoc
classi derivate da .
Per altre informazioni sui server, vedere l'articolo Server: Implementazione di un server.
Gerarchia di ereditarietà
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 COleLinkingDoc
di OnNewDocument
, OnOpenDocument
e 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; in caso contrario FALSE.
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 COleServerDoc
della 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 COleServerDoc
della 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 COleServerDoc
di 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 OLECLOSE. Per il parametro è possibile specificare uno dei valori riportati di seguito:
OLECLOSE_SAVEIFDIRTY Il file viene salvato se è stato modificato.
OLECLOSE_NOSAVE Il file viene chiuso senza essere salvato.
OLECLOSE_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 OLECLOSE 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 FALSE. 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_PROMPTUSER
OLECMDEXECOPT_DONTPROMPTUSER
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 COleServerItem
classe 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 FALSE 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 FALSE 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 è FALSE, 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 CObject
classe derivata da -per archiviare informazioni sulle modifiche e passare un oggetto di tale classe usando pHint. Eseguire l'override della OnUpdate
funzione membro nella COleServerItem
classe 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