Classe CDocument
Fornisce la funzionalità di base per le classi documento definite dall'utente.
Sintassi
class CDocument : public CCmdTarget
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CDocument::CDocument |
Costruisce un oggetto CDocument . |
Metodi pubblici
Nome | Descrizione |
---|---|
CDocument::AddView |
Allega una visualizzazione al documento. |
CDocument::BeginReadChunks |
Inizializza la lettura dei blocchi. |
CDocument::CanCloseFrame |
Override avanzato; chiamato prima di chiudere una finestra cornice che visualizza il documento. |
CDocument::ClearChunkList |
Cancella l'elenco blocchi. |
CDocument::ClearPathName |
Cancella il percorso dell'oggetto documento. |
CDocument::DeleteContents |
Chiamato per eseguire la pulizia del documento. |
CDocument::FindChunk |
Cerca un blocco con GUID specificato. |
CDocument::GetAdapter |
Restituisce un puntatore all'oggetto che implementa l'interfaccia IDocument . |
CDocument::GetDocTemplate |
Restituisce un puntatore al modello di documento che descrive il tipo di documento. |
CDocument::GetFile |
Restituisce un puntatore all'oggetto desiderato CFile . |
CDocument::GetFirstViewPosition |
Restituisce la posizione del primo nell'elenco di visualizzazioni; utilizzato per iniziare l'iterazione. |
CDocument::GetNextView |
Scorre l'elenco di visualizzazioni associate al documento. |
CDocument::GetPathName |
Restituisce il percorso del file di dati del documento. |
CDocument::GetThumbnail |
Chiamato per creare una bitmap da usare dal provider di anteprime per visualizzare l'anteprima. |
CDocument::GetTitle |
Restituisce il titolo del documento. |
CDocument::InitializeSearchContent |
Chiamato per inizializzare il contenuto di ricerca per il gestore di ricerca. |
CDocument::IsModified |
Indica se il documento è stato modificato dopo l'ultimo salvataggio. |
CDocument::IsSearchAndOrganizeHandler |
Indica se questa istanza dell'oggetto CDocument è stata creata per il gestore Search & Organize. |
CDocument::LoadDocumentFromStream |
Chiamato per caricare i dati del documento dal flusso. |
CDocument::OnBeforeRichPreviewFontChanged |
Chiamato prima della modifica del tipo di carattere Rich Preview. |
CDocument::OnChangedViewList |
Chiamato dopo l'aggiunta o la rimozione di una visualizzazione dal documento. |
CDocument::OnCloseDocument |
Chiamato per chiudere il documento. |
CDocument::OnCreatePreviewFrame |
Chiamato dal framework quando deve creare un frame di anteprima per Rich Preview. |
CDocument::OnDocumentEvent |
Chiamato dal framework in risposta a un evento di documento. |
CDocument::OnDrawThumbnail |
Eseguire l'override di questo metodo in una classe derivata per disegnare il contenuto dell'anteprima. |
CDocument::OnLoadDocumentFromStream |
Chiamato dal framework quando è necessario caricare i dati del documento dal flusso. |
CDocument::OnNewDocument |
Chiamato per creare un nuovo documento. |
CDocument::OnOpenDocument |
Chiamato per aprire un documento esistente. |
CDocument::OnPreviewHandlerQueryFocus |
Indirizza il gestore di anteprima a restituire l'oggetto HWND dalla chiamata alla GetFocus funzione. |
CDocument::OnPreviewHandlerTranslateAccelerator |
Indirizza il gestore di anteprima a gestire una sequenza di tasti passata dal message pump del processo in cui è in esecuzione il gestore di anteprima. |
CDocument::OnRichPreviewBackColorChanged |
Chiamato quando il colore di sfondo rich Preview è cambiato. |
CDocument::OnRichPreviewFontChanged |
Chiamato quando il tipo di carattere Rich Preview è stato modificato. |
CDocument::OnRichPreviewSiteChanged |
Chiamato quando il sito Rich Preview è cambiato. |
CDocument::OnRichPreviewTextColorChanged |
Chiamato quando il colore del testo Rich Preview è cambiato. |
CDocument::OnSaveDocument |
Chiamato per salvare il documento su disco. |
CDocument::OnUnloadHandler |
Chiamato dal framework quando il gestore di anteprima viene scaricato. |
CDocument::PreCloseFrame |
Chiamato prima della chiusura della finestra cornice. |
CDocument::ReadNextChunkValue |
Legge il valore successivo del blocco. |
CDocument::ReleaseFile |
Rilascia un file per renderlo disponibile per l'uso da parte di altre applicazioni. |
CDocument::RemoveChunk |
Rimuove un blocco con l'oggetto specificato GUID . |
CDocument::RemoveView |
Scollega una visualizzazione dal documento. |
CDocument::ReportSaveLoadException |
Override avanzato; chiamato quando non è possibile completare un'operazione di apertura o salvataggio a causa di un'eccezione. |
CDocument::SaveModified |
Override avanzato; viene chiamato per chiedere all'utente se il documento deve essere salvato. |
CDocument::SetChunkValue |
Imposta un valore di blocco. |
CDocument::SetModifiedFlag |
Imposta un flag che indica che il documento è stato modificato dall'ultimo salvataggio. |
CDocument::SetPathName |
Imposta il percorso del file di dati utilizzato dal documento. |
CDocument::SetTitle |
Imposta il titolo del documento. |
CDocument::UpdateAllViews |
Notifica a tutte le visualizzazioni che il documento è stato modificato. |
Metodi protetti
Nome | Descrizione |
---|---|
CDocument::OnFileSendMail |
Invia un messaggio di posta elettronica con il documento allegato. |
CDocument::OnUpdateFileSendMail |
Abilita il comando Invia messaggio se è presente il supporto della posta elettronica. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CDocument::m_bGetThumbnailMode |
Specifica che CDocument l'oggetto è stato creato da dllhost per le anteprime. Deve essere archiviato in CView::OnDraw . |
CDocument::m_bPreviewHandlerMode |
Specifica che CDocument l'oggetto è stato creato da prevhost per Rich Preview . Deve essere archiviato in CView::OnDraw . |
CDocument::m_bSearchMode |
Specifica che l'oggetto CDocument è stato creato dall'indicizzatore o da un'altra applicazione di ricerca. |
CDocument::m_clrRichPreviewBackColor |
Specifica il colore di sfondo della finestra Anteprima avanzata. Questo colore viene impostato dall'host. |
CDocument::m_clrRichPreviewTextColor |
Specifica il colore di primo piano della finestra Anteprima avanzata. Questo colore viene impostato dall'host. |
CDocument::m_lfRichPreviewFont |
Specifica il tipo di carattere di testo per la finestra Anteprima rtf. Queste informazioni sul tipo di carattere vengono impostate dall'host. |
Osservazioni:
Un documento rappresenta l'unità di dati che l'utente apre in genere con il comando Apri file e salva con il comando Salva file.
CDocument
supporta operazioni standard, ad esempio la creazione di un documento, il caricamento e il salvataggio. Il framework modifica i documenti usando l'interfaccia definita da CDocument
.
Un'applicazione può supportare più tipi di documento; Ad esempio, un'applicazione potrebbe supportare fogli di calcolo e documenti di testo. Ogni tipo di documento ha un modello di documento associato; Il modello di documento specifica le risorse (ad esempio, menu, icona o tabella dell'acceleratore) usate per quel tipo di documento. Ogni documento contiene un puntatore all'oggetto associato CDocTemplate
.
Gli utenti interagiscono con un documento tramite gli CView
oggetti associati. Una visualizzazione esegue il rendering di un'immagine del documento in una finestra cornice e interpreta l'input dell'utente come operazioni sul documento. A un documento possono essere associate più visualizzazioni. Quando l'utente apre una finestra in un documento, il framework crea una visualizzazione e lo collega al documento. Il modello di documento specifica il tipo di finestra di visualizzazione e cornice utilizzato per visualizzare ogni tipo di documento.
I documenti fanno parte del routing dei comandi standard del framework e ricevono di conseguenza comandi dai componenti standard dell'interfaccia utente (ad esempio la voce di menu Salva file). Un documento riceve i comandi inoltrati dalla visualizzazione attiva. Se il documento non gestisce un determinato comando, inoltra il comando al modello di documento che lo gestisce.
Quando i dati di un documento vengono modificati, ognuna delle relative visualizzazioni deve riflettere tali modifiche. CDocument
fornisce la UpdateAllViews
funzione membro per notificare le visualizzazioni di tali modifiche, in modo che le visualizzazioni possano ricompigliarsi in base alle esigenze. Il framework richiede inoltre all'utente di salvare un file modificato prima di chiuderlo.
Per implementare documenti in un'applicazione tipica, è necessario eseguire le operazioni seguenti:
Derivare una classe da
CDocument
per ogni tipo di documento.Aggiungere variabili membro per archiviare i dati di ogni documento.
Implementare funzioni membro per la lettura e la modifica dei dati del documento. Le visualizzazioni del documento sono gli utenti più importanti di queste funzioni membro.
Eseguire l'override della
CObject::Serialize
funzione membro nella classe del documento per scrivere e leggere i dati del documento da e verso il disco.
CDocument
supporta l'invio del documento tramite posta elettronica se è presente il supporto della posta elettronica (MAPI). Vedere gli articoli MAPI e MAPI Support in MFC.
Per altre informazioni su CDocument
, vedere Serializzazione, Argomenti sull'architettura di documenti/visualizzazioni e Creazione di documenti/visualizzazioni.
Gerarchia di ereditarietà
CDocument
Requisiti
Intestazione: afxwin.h
CDocument::AddView
Chiamare questa funzione per allegare una visualizzazione al documento.
void AddView(CView* pView);
Parametri
pView
Punta alla visualizzazione da aggiungere.
Osservazioni:
Questa funzione aggiunge la visualizzazione specificata all'elenco di visualizzazioni associate al documento; la funzione imposta anche il puntatore del documento della visualizzazione a questo documento. Il framework chiama questa funzione quando si collega un oggetto visualizzazione appena creato a un documento; ciò si verifica in risposta a un comando File Nuovo, Apri file o Nuova finestra o quando viene divisa una finestra di divisione.
Chiamare questa funzione solo se si crea e si collega manualmente una vista. In genere è possibile consentire al framework di connettere documenti e visualizzazioni definendo un CDocTemplate
oggetto per associare una classe documento, una classe di visualizzazione e una classe finestra cornice.
Esempio
// The following example toggles two views in an SDI (single document
// interface) frame window. A design decision must be made as to
// whether to leave the inactive view connected to the document,
// such that the inactive view continues to receive OnUpdate
// notifications from the document. It is usually desirable to
// keep the inactive view continuously in sync with the document, even
// though it is inactive. However, doing so incurs a performance cost,
// as well as the programming cost of implementing OnUpdate hints.
// It may be less expensive, in terms of performance and/or programming,
// to re-sync the inactive view with the document only with it is
// reactivated. This example illustrates this latter approach, by
// reconnecting the newly active view and disconnecting the newly
// inactive view, via calls to CDocument::AddView and RemoveView.
void CMainFrame::OnViewChange(UINT nCmdID)
// There is an ON_COMMAND_RANGE message map entry associated with
// OnViewChange:
// ON_COMMAND_RANGE(ID_VIEW_CHANGE1, ID_VIEW_CHANGE2, &OnViewChange)
{
CView *pViewAdd;
CView *pViewRemove;
CDocument *pDoc = GetActiveDocument();
// cvView1 and cvView2 are enum members defined in my CMainFrame class
if ((nCmdID == ID_VIEW_CHANGE1) && (m_currentView == cvView1))
return;
if ((nCmdID == ID_VIEW_CHANGE2) && (m_currentView == cvView2))
return;
if (nCmdID == ID_VIEW_CHANGE2)
{
if (m_pView2 == NULL)
{
m_pView1 = GetActiveView();
m_pView2 = new CMyView2;
//Note that if OnSize has been overridden in CMyView2
//and GetDocument() is used in this override it can
//cause assertions and, if the assertions are ignored,
//cause access violation.
m_pView2->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, rectDefault, this,
AFX_IDW_PANE_FIRST + 1, NULL);
}
pViewAdd = m_pView2;
pViewRemove = m_pView1;
m_currentView = cvView2;
}
else
{
pViewAdd = m_pView1;
pViewRemove = m_pView2;
m_currentView = cvView1;
}
// Set the child i.d. of the active view to AFX_IDW_PANE_FIRST,
// so that CFrameWnd::RecalcLayout will allocate to this
// "first pane" that portion of the frame window's client area
// not allocated to control bars. Set the child i.d. of the
// other view to anything other than AFX_IDW_PANE_FIRST; this
// examples switches the child id's of the two views.
int nSwitchChildID = pViewAdd->GetDlgCtrlID();
pViewAdd->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
pViewRemove->SetDlgCtrlID(nSwitchChildID);
// Show the newly active view and hide the inactive view.
pViewAdd->ShowWindow(SW_SHOW);
pViewRemove->ShowWindow(SW_HIDE);
// Connect the newly active view to the document, and
// disconnect the inactive view.
pDoc->AddView(pViewAdd);
pDoc->RemoveView(pViewRemove);
SetActiveView(pViewAdd);
RecalcLayout();
}
CDocument::BeginReadChunks
Inizializza la lettura dei blocchi.
virtual void BeginReadChunks ();
Osservazioni:
CDocument::CanCloseFrame
Chiamato dal framework prima della chiusura di una finestra cornice che visualizza il documento.
virtual BOOL CanCloseFrame(CFrameWnd* pFrame);
Parametri
pFrame
Punta alla finestra cornice di una visualizzazione collegata al documento.
Valore restituito
Diverso da zero se è sicuro chiudere la finestra cornice; in caso contrario, 0.
Osservazioni:
L'implementazione predefinita controlla se sono presenti altre finestre cornice che visualizzano il documento. Se la finestra cornice specificata è l'ultima che visualizza il documento, la funzione chiede all'utente di salvare il documento se è stato modificato. Eseguire l'override di questa funzione se si desidera eseguire un'elaborazione speciale quando una finestra cornice viene chiusa. Si tratta di un override avanzato.
CDocument::CDocument
Costruisce un oggetto CDocument
.
CDocument();
Osservazioni:
Il framework gestisce automaticamente la creazione di documenti. Eseguire l'override della OnNewDocument
funzione membro per eseguire l'inizializzazione per ogni documento. Ciò è particolarmente importante nelle applicazioni SDI (Single Document Interface).
CDocument::ClearChunkList
Cancella l'elenco blocchi.
virtual void ClearChunkList ();
Osservazioni:
CDocument::ClearPathName
Cancella il percorso dell'oggetto documento.
virtual void ClearPathName();
Osservazioni:
Se si cancella il percorso da un CDocument
oggetto, l'applicazione chiede all'utente quando il documento viene salvato successivamente. In questo modo un comando Save si comporta come un comando Salva con nome .
CDocument::DeleteContents
Chiamato dal framework per eliminare i dati del documento senza distruggere l'oggetto CDocument
stesso.
virtual void DeleteContents();
Osservazioni:
Viene chiamato poco prima che il documento venga distrutto. Viene chiamato anche per assicurarsi che un documento sia vuoto prima che venga riutilizzato. Ciò è particolarmente importante per un'applicazione SDI, che usa un solo documento; il documento viene riutilizzato ogni volta che l'utente crea o apre un altro documento. Chiamare questa funzione per implementare un comando simile o "Modifica cancella tutto" che elimina tutti i dati del documento. L'implementazione predefinita di questa funzione non esegue alcuna operazione. Eseguire l'override di questa funzione per eliminare i dati nel documento.
Esempio
// This example is the handler for an Edit Clear All command.
void CExampleDoc::OnEditClearAll()
{
DeleteContents();
UpdateAllViews(NULL);
}
void CExampleDoc::DeleteContents()
{
// Re-initialize document data here.
}
CDocument::FindChunk
Cerca un blocco con un GUID specificato.
virtual POSITION FindChunk(
REFCLSID guid,
DWORD pid);
Parametri
guid
Specifica il GUID di un blocco da trovare.
pid
Specifica un PID di un blocco da trovare.
Valore restituito
Se ha esito positivo, posizionarsi nell'elenco dei blocchi interni. In caso contrario, NULL
.
Osservazioni:
CDocument::GetAdapter
Restituisce un puntatore a un oggetto che implementa l'interfaccia IDocument
.
virtual ATL::IDocument* GetAdapter();
Valore restituito
Puntatore a un oggetto che implementa l'interfaccia IDocument
.
Osservazioni:
CDocument::GetDocTemplate
Chiamare questa funzione per ottenere un puntatore al modello di documento per questo tipo di documento.
CDocTemplate* GetDocTemplate() const;
Valore restituito
Puntatore al modello di documento per questo tipo di documento o NULL se il documento non è gestito da un modello di documento.
Esempio
// This example accesses the doc template object to construct
// a default document name such as SHEET.XLS, where "sheet"
// is the base document name and ".xls" is the file extension
// for the document type.
CString strDefaultDocName, strBaseName, strExt;
CDocTemplate *pDocTemplate = GetDocTemplate();
if (!pDocTemplate->GetDocString(strBaseName, CDocTemplate::docName) || !pDocTemplate->GetDocString(strExt, CDocTemplate::filterExt))
{
AfxThrowUserException(); // These doc template strings will
// be available if you created the application using AppWizard
// and specified the file extension as an option for
// the document class produced by AppWizard.
}
strDefaultDocName = strBaseName + strExt;
CDocument::GetFile
Chiamare questa funzione membro per ottenere un puntatore a un CFile
oggetto .
virtual CFile* GetFile(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CFileException* pError);
Parametri
lpszFileName
Stringa che rappresenta il percorso del file desiderato. Il percorso può essere relativo o assoluto.
pError
Puntatore a un oggetto eccezione file esistente che indica lo stato di completamento dell'operazione.
nOpenFlags
Modalità di condivisione e accesso. Specifica l'azione da eseguire all'apertura del file. È possibile combinare le opzioni elencate nel costruttore CFile::CFile
CFile usando l'operatore OR bit per bit (|
). Sono necessarie un'autorizzazione di accesso e un'opzione di condivisione; le modeCreate
modalità e modeNoInherit
sono facoltative.
Valore restituito
Puntatore a un oggetto CFile
.
CDocument::GetFirstViewPosition
Chiamare questa funzione per ottenere la posizione della prima visualizzazione nell'elenco di visualizzazioni associate al documento.
virtual POSITION GetFirstViewPosition() const;
Valore restituito
Valore POSITION
che può essere usato per l'iterazione con la GetNextView
funzione membro.
Esempio
//To get the first view in the list of views:
//To get the first view in the list of views:
// POSITION pos = GetFirstViewPosition();
// CView* pFirstView = GetNextView(pos);
//
// This example uses CDocument::GetFirstViewPosition
// and GetNextView to repaint each view.
// An easier way to accomplish the same result is to call
// UpdateAllViews(NULL);
void CExampleDoc::OnRepaintAllViews()
{
POSITION pos = GetFirstViewPosition();
while (pos != NULL)
{
CView *pView = GetNextView(pos);
pView->UpdateWindow();
}
}
CDocument::GetNextView
Chiamare questa funzione per scorrere tutte le visualizzazioni del documento.
virtual CView* GetNextView(POSITION& rPosition) const;
Parametri
rPosition
Riferimento a un POSITION
valore restituito da una chiamata precedente alle GetNextView
funzioni membro o GetFirstViewPosition
. Questo valore non deve essere NULL
.
Valore restituito
Puntatore alla vista identificata da rPosition
.
Osservazioni:
La funzione restituisce la vista identificata da rPosition
e quindi imposta rPosition
il POSITION
valore della visualizzazione successiva nell'elenco. Se la visualizzazione recuperata è l'ultima nell'elenco, rPosition
viene impostata su NULL
.
Esempio
//To get the first view in the list of views:
//To get the first view in the list of views:
// POSITION pos = GetFirstViewPosition();
// CView* pFirstView = GetNextView(pos);
//
// This example uses CDocument::GetFirstViewPosition
// and GetNextView to repaint each view.
// An easier way to accomplish the same result is to call
// UpdateAllViews(NULL);
void CExampleDoc::OnRepaintAllViews()
{
POSITION pos = GetFirstViewPosition();
while (pos != NULL)
{
CView *pView = GetNextView(pos);
pView->UpdateWindow();
}
}
CDocument::GetPathName
Chiamare questa funzione per ottenere il percorso completo del file del disco del documento.
const CString& GetPathName() const;
Valore restituito
Percorso completo del documento. Questa stringa è vuota se il documento non è stato salvato o non dispone di un file su disco associato.
CDocument::GetThumbnail
Crea una bitmap da utilizzare dal provider di anteprime per visualizzare l'anteprima.
virtual BOOL GetThumbnail(
UINT cx,
HBITMAP* phbmp,
DWORD* pdwAlpha);
Parametri
cx
Specifica la larghezza e l'altezza della bitmap.
phbmp
Contiene un handle per una bitmap quando la funzione viene restituita correttamente.
pdwAlpha
Contiene un oggetto DWORD
che specifica il valore del canale alfa, quando la funzione restituisce correttamente.
Valore restituito
Restituisce TRUE
se è stata creata correttamente una bitmap per l'anteprima; in caso contrario FALSE
, .
Osservazioni:
CDocument::GetTitle
Chiamare questa funzione per ottenere il titolo del documento, che in genere deriva dal nome file del documento.
const CString& GetTitle() const;
Valore restituito
Titolo del documento.
CDocument::InitializeSearchContent
Chiamato per inizializzare il contenuto di ricerca per il gestore di ricerca.
virtual void InitializeSearchContent ();
Osservazioni:
Eseguire l'override di questo metodo in una classe derivata per inizializzare il contenuto di ricerca. Il contenuto deve essere una stringa con parti delimitate da ";". Ad esempio, "point; rettangolo; ole item".
CDocument::IsModified
Chiamare questa funzione per determinare se il documento è stato modificato dopo l'ultimo salvataggio.
virtual BOOL IsModified();
Valore restituito
Diverso da zero se il documento è stato modificato dopo l'ultimo salvataggio; in caso contrario, 0.
CDocument::IsSearchAndOrganizeHandler
Indica se questa istanza di CDocument
è stata creata per il gestore Search & Organize.
BOOL IsSearchAndOrganizeHandler() const;
Valore restituito
Restituisce TRUE
se questa istanza di CDocument
è stata creata per il gestore Search & Organize.
Osservazioni:
Attualmente questa funzione restituisce TRUE
solo per i gestori di anteprima avanzata implementati in un server di elaborazione esterno. È possibile impostare i flag appropriati (m_bPreviewHandlerMode
, m_bSearchMode
, m_bGetThumbnailMode
) a livello di applicazione per fare in modo che questa funzione restituisca TRUE
.
CDocument::LoadDocumentFromStream
Chiamato per caricare i dati del documento da un flusso.
virtual HRESULT LoadDocumentFromStream(
IStream* pStream,
DWORD dwGrfMode);
Parametri
pStream
Puntatore a un flusso. Questo flusso viene fornito dalla shell.
dwGrfMode
Modalità di accesso al flusso.
Valore restituito
S_OK
se l'operazione di caricamento ha esito positivo, in caso contrario HRESULT
con un codice di errore.
Osservazioni:
È possibile eseguire l'override di questo metodo in una classe derivata per personalizzare la modalità di caricamento dei dati dal flusso.
CDocument::m_bGetThumbnailMode
Specifica che l'oggetto CDocument
è stato creato da dllhost per le anteprime. Deve essere archiviato in CView::OnDraw
.
BOOL m_bGetThumbnailMode;
Osservazioni:
TRUE
indica che il documento è stato creato da dllhost per le anteprime.
CDocument::m_bPreviewHandlerMode
Specifica che l'oggetto CDocument
è stato creato da prevhost per Rich Preview. Deve essere archiviato in CView::OnDraw
.
BOOL m_bPreviewHandlerMode;
Osservazioni:
TRUE
indica che il documento è stato creato da prevhost per Rich Preview.
CDocument::m_bSearchMode
Specifica che l'oggetto è stato creato dall'indicizzatore CDocument
o da un'altra applicazione di ricerca.
BOOL m_bSearchMode;
Osservazioni:
TRUE
indica che il documento è stato creato dall'indicizzatore o da un'altra applicazione di ricerca.
CDocument::m_clrRichPreviewBackColor
Specifica il colore di sfondo della finestra Anteprima avanzata. Questo colore viene impostato dall'host.
COLORREF m_clrRichPreviewBackColor;
Osservazioni:
CDocument::m_clrRichPreviewTextColor
Specifica il colore di primo piano della finestra Anteprima avanzata. Questo colore viene impostato dall'host.
COLORREF m_clrRichPreviewTextColor;
Osservazioni:
CDocument::m_lfRichPreviewFont
Specifica il tipo di carattere di testo per la finestra Anteprima rtf. Queste informazioni sul tipo di carattere vengono impostate dall'host.
CFont m_lfRichPreviewFont;
Osservazioni:
CDocument::OnBeforeRichPreviewFontChanged
Chiamato prima della modifica del tipo di carattere Rich Preview.
virtual void OnBeforeRichPreviewFontChanged();
Osservazioni:
CDocument::OnChangedViewList
Chiamato dal framework dopo l'aggiunta o la rimozione di una visualizzazione dal documento.
virtual void OnChangedViewList();
Osservazioni:
L'implementazione predefinita di questa funzione controlla se l'ultima visualizzazione viene rimossa e, in tal caso, elimina il documento. Eseguire l'override di questa funzione se si desidera eseguire un'elaborazione speciale quando il framework aggiunge o rimuove una visualizzazione. Ad esempio, se si desidera che un documento rimanga aperto anche quando non sono associate visualizzazioni, eseguire l'override di questa funzione.
CDocument::OnCloseDocument
Chiamato dal framework quando il documento viene chiuso, in genere come parte del comando Chiudi file.
virtual void OnCloseDocument();
Osservazioni:
L'implementazione predefinita di questa funzione elimina definitivamente tutti i fotogrammi utilizzati per la visualizzazione del documento, chiude la visualizzazione, pulisce il contenuto del documento e quindi chiama la DeleteContents
funzione membro per eliminare i dati del documento.
Eseguire l'override di questa funzione se si desidera eseguire un'elaborazione di pulizia speciale quando il framework chiude un documento. Ad esempio, se il documento rappresenta un record in un database, è possibile eseguire l'override di questa funzione per chiudere il database. È necessario chiamare la versione della classe base di questa funzione dall'override.
CDocument::OnCreatePreviewFrame
Chiamato dal framework quando deve creare un frame di anteprima per Rich Preview.
virtual BOOL OnCreatePreviewFrame();
Valore restituito
Restituisce TRUE
se il frame viene creato correttamente; in caso contrario FALSE
, .
Osservazioni:
CDocument::OnDocumentEvent
Chiamato dal framework in risposta a un evento di documento.
virtual void OnDocumentEvent(DocumentEvent deEvent);
Parametri
deEvent
[in] Tipo di dati enumerato che descrive il tipo di evento.
Osservazioni:
Gli eventi del documento possono influire su più classi. Questo metodo è responsabile della gestione degli eventi del documento che influiscono sulle classi diverse dalla CDocument
classe . Attualmente, l'unica classe che deve rispondere agli eventi del documento è la CDataRecoveryHandler
classe . La CDocument
classe dispone di altri metodi sostituibili responsabili della gestione dell'effetto sull'oggetto CDocument
.
Nella tabella seguente sono elencati i valori possibili per deEvent
e gli eventi a cui corrispondono.
Valore | Evento corrispondente |
---|---|
onAfterNewDocument |
È stato creato un nuovo documento. |
onAfterOpenDocument |
È stato aperto un nuovo documento. |
onAfterSaveDocument |
Il documento è stato salvato. |
onAfterCloseDocument |
Il documento è stato chiuso. |
CDocument::OnDrawThumbnail
Eseguire l'override di questo metodo in una classe derivata per disegnare l'anteprima.
virtual void OnDrawThumbnail(
CDC& dc,
LPRECT lprcBounds);
Parametri
dc
Riferimento a un contesto di dispositivo.
lprcBounds
Specifica un rettangolo di delimitazione dell'area in cui deve essere disegnata l'anteprima.
Osservazioni:
CDocument::OnFileSendMail
Invia un messaggio tramite l'host di posta residente (se presente) con il documento come allegato.
void OnFileSendMail();
Osservazioni:
OnFileSendMail
chiama OnSaveDocument
per serializzare (salvare) documenti senza titolo e modificati in un file temporaneo, che viene quindi inviato tramite posta elettronica. Se il documento non è stato modificato, non è necessario un file temporaneo; l'originale viene inviato. OnFileSendMail
carica MAPI32.DLL se non è già stato caricato.
Implementazione speciale di OnFileSendMail
per COleDocument
gestire correttamente i file composti.
CDocument
supporta l'invio del documento tramite posta elettronica se è presente il supporto della posta elettronica (MAPI). Vedere gli articoli MAPI Topics and MAPI Support in MFC (Argomenti MAPI e supporto MAPI in MFC).
CDocument::OnLoadDocumentFromStream
Chiamato dal framework quando deve caricare i dati del documento da un flusso.
virtual HRESULT OnLoadDocumentFromStream(
IStream* pStream,
DWORD grfMode);
Parametri
pStream
Puntatore a un flusso in ingresso.
grfMode
Modalità di accesso al flusso.
Valore restituito
S_OK
se il carico ha esito positivo; in caso contrario, un codice di errore.
Osservazioni:
CDocument::OnNewDocument
Chiamato dal framework come parte del comando File Nuovo.
virtual BOOL OnNewDocument();
Valore restituito
Diverso da zero se il documento è stato inizializzato correttamente; in caso contrario, 0.
Osservazioni:
L'implementazione predefinita di questa funzione chiama la DeleteContents
funzione membro per assicurarsi che il documento sia vuoto e quindi contrassegna il nuovo documento come pulito. Eseguire l'override di questa funzione per inizializzare la struttura dei dati per un nuovo documento. È necessario chiamare la versione della classe base di questa funzione dall'override.
Se l'utente sceglie il comando File New in un'applicazione SDI, il framework usa questa funzione per reinizializzare il documento esistente anziché crearne uno nuovo. Se l'utente sceglie File New in un'applicazione MDI (Multiple Document Interface), il framework crea un nuovo documento ogni volta e quindi chiama questa funzione per inizializzarla. È necessario inserire il codice di inizializzazione in questa funzione anziché nel costruttore affinché il comando File New sia efficace nelle applicazioni SDI.
Si noti che ci sono casi in cui OnNewDocument
viene chiamato due volte. Ciò si verifica quando il documento viene incorporato come server di documenti ActiveX. La funzione viene prima chiamata dal CreateInstance
metodo (esposto dalla classe derivata da COleObjectFactory
) e una seconda volta dal InitNew
metodo (esposto dalla classe derivata da COleServerDoc
).
Esempio
Negli esempi seguenti vengono illustrati metodi alternativi per l'inizializzazione di un oggetto documento.
// Method 1: In an MDI application, the simplest place to do
// initialization is in the document constructor. The framework
// always creates a new document object for File New or File Open.
CExampleDoc::CExampleDoc()
{
// Do initialization of MDI document here.
}
// Method 2: In an SDI or MDI application, do all initialization
// in an override of OnNewDocument, if you are certain that
// the initialization is effectively saved upon File Save
// and fully restored upon File Open, via serialization.
BOOL CMyDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
{
return FALSE;
}
// Do initialization of new document here.
return TRUE;
}
// Method 3: If the initialization of your document is not
// effectively saved and restored by serialization (during File Save
// and File Open), then implement the initialization in single
// function (named InitMyDocument in this example). Call the
// shared initialization function from overrides of both
// OnNewDocument and OnOpenDocument.
BOOL CExampleDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
{
return FALSE;
}
InitMyDocument(); // call your shared initialization function
// If your new document object requires additional initialization
// not necessary when the document is deserialized via File Open,
// then perform that additional initialization here.
return TRUE;
}
CDocument::OnOpenDocument
Chiamato dal framework come parte del comando File Open.
virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
Parametri
lpszPathName
Punta al percorso del documento da aprire.
Valore restituito
Diverso da zero se il documento è stato caricato correttamente; in caso contrario, 0.
Osservazioni:
L'implementazione predefinita di questa funzione apre il file specificato, chiama la DeleteContents
funzione membro per assicurarsi che il documento sia vuoto, chiami CObject::Serialize
per leggere il contenuto del file e quindi contrassegna il documento come pulito. Eseguire l'override di questa funzione se si vuole usare un valore diverso dal meccanismo di archiviazione o dal meccanismo di file. Ad esempio, è possibile scrivere un'applicazione in cui i documenti rappresentano record in un database anziché file separati.
Se l'utente sceglie il comando File Open in un'applicazione SDI, il framework usa questa funzione per reinizializzare l'oggetto esistente CDocument
anziché crearne uno nuovo. Se l'utente sceglie File Open in un'applicazione MDI, il framework costruisce un nuovo CDocument
oggetto ogni volta e quindi chiama questa funzione per inizializzarla. È necessario inserire il codice di inizializzazione in questa funzione anziché nel costruttore affinché il comando File Open sia efficace nelle applicazioni SDI.
Esempio
Negli esempi seguenti vengono illustrati metodi alternativi per l'inizializzazione di un oggetto documento.
// Method 1: In an MDI application, the simplest place to do
// initialization is in the document constructor. The framework
// always creates a new document object for File New or File Open.
CExampleDoc::CExampleDoc()
{
// Do initialization of MDI document here.
}
// Method 2: In an SDI or MDI application, do all initialization
// in an override of OnNewDocument, if you are certain that
// the initialization is effectively saved upon File Save
// and fully restored upon File Open, via serialization.
BOOL CMyDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
{
return FALSE;
}
// Do initialization of new document here.
return TRUE;
}
// Method 3: If the initialization of your document is not
// effectively saved and restored by serialization (during File Save
// and File Open), then implement the initialization in single
// function (named InitMyDocument in this example). Call the
// shared initialization function from overrides of both
// OnNewDocument and OnOpenDocument.
BOOL CExampleDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
{
return FALSE;
}
InitMyDocument(); // call your shared initialization function
// If your new document object requires additional initialization
// not necessary when the document is deserialized via File Open,
// then perform that additional initialization here.
return TRUE;
}
// Additional example of OnOpenDocument()
BOOL CExampleDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
{
return FALSE;
}
InitMyDocument(); // call your shared initialization function
return TRUE;
}
CDocument::OnPreviewHandlerQueryFocus
Indica al gestore di anteprima di restituire l'oggetto HWND
recuperato dalla chiamata alla GetFocus
funzione.
virtual HRESULT OnPreviewHandlerQueryFocus(HWND* phwnd);
Parametri
phwnd
[out] Quando termina, questo metodo contiene un puntatore a HWND restituito dalla chiamata della GetFocus
funzione dal thread in primo piano del gestore di anteprima.
Valore restituito
Restituisce S_OK
se ha esito positivo oppure un valore di errore in caso contrario.
Osservazioni:
CDocument::OnPreviewHandlerTranslateAccelerator
Indirizza il gestore di anteprima a gestire una sequenza di tasti passata dal message pump del processo in cui è in esecuzione il gestore di anteprima.
virtual HRESULT OnPreviewHandlerTranslateAccelerator(MSG* pmsg);
Parametri
pmsg
[in] Puntatore a un messaggio di finestra.
Valore restituito
Se il messaggio di sequenza di tasti può essere elaborato dal gestore di anteprima, il gestore lo elabora e restituisce S_OK
. Se il gestore di anteprima non è in grado di elaborare il messaggio di sequenza di tasti, lo offre all'host tramite IPreviewHandlerFrame::TranslateAccelerator
. Se l'host elabora il messaggio, questo metodo restituisce S_OK
. Se l'host non elabora il messaggio, questo metodo restituisce S_FALSE
.
Osservazioni:
CDocument::OnRichPreviewBackColorChanged
Chiamato quando il colore di sfondo Rich Preview è cambiato.
virtual void OnRichPreviewBackColorChanged();
Osservazioni:
CDocument::OnRichPreviewFontChanged
Chiamato quando il tipo di carattere Rich Preview è stato modificato.
virtual void OnRichPreviewFontChanged();
Osservazioni:
CDocument::OnRichPreviewSiteChanged
Chiamato quando il sito Rich Preview è stato modificato.
virtual void OnRichPreviewSiteChanged();
Osservazioni:
CDocument::OnRichPreviewTextColorChanged
Chiamato quando il colore del testo Rich Preview è stato modificato.
virtual void OnRichPreviewTextColorChanged();
Osservazioni:
CDocument::OnSaveDocument
Chiamato dal framework come parte del comando Salva file o Salva con nome file.
virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
Parametri
lpszPathName
Punta al percorso completo in cui salvare il file.
Valore restituito
Diverso da zero se il documento è stato salvato correttamente; in caso contrario, 0.
Osservazioni:
L'implementazione predefinita di questa funzione apre il file specificato, chiama CObject::Serialize
per scrivere i dati del documento nel file e quindi contrassegna il documento come pulito. Eseguire l'override di questa funzione se si desidera eseguire un'elaborazione speciale quando il framework salva un documento. Ad esempio, è possibile scrivere un'applicazione in cui i documenti rappresentano record in un database anziché file separati.
CDocument::OnUnloadHandler
Chiamato dal framework quando il gestore di anteprima viene scaricato.
virtual void OnUnloadHandler();
Osservazioni:
CDocument::OnUpdateFileSendMail
Abilita il ID_FILE_SEND_MAIL
comando se è presente il supporto della posta elettronica (MAPI).
void OnUpdateFileSendMail(CCmdUI* pCmdUI);
Parametri
pCmdUI
Puntatore all'oggetto CCmdUI
associato al ID_FILE_SEND_MAIL
comando.
Osservazioni:
In caso contrario, la funzione rimuove il ID_FILE_SEND_MAIL
comando dal menu, inclusi i separatori sopra o sotto la voce di menu in base alle esigenze. MAPI è abilitato se MAPI32.DLL
è presente nel percorso e nella sezione [Mail] del WIN.INI
file MAPI=1. La maggior parte delle applicazioni inserisce questo comando nel menu File.
CDocument
supporta l'invio del documento tramite posta elettronica se è presente il supporto della posta elettronica (MAPI). Vedere gli articoli MAPI Topics and MAPI Support in MFC (Argomenti MAPI e supporto MAPI in MFC).
CDocument::PreCloseFrame
Questa funzione membro viene chiamata dal framework prima che la finestra cornice venga eliminata definitivamente.
virtual void PreCloseFrame(CFrameWnd* pFrame);
Parametri
pFrame
Puntatore all'oggetto CFrameWnd
che contiene l'oggetto associato CDocument
.
Osservazioni:
Può essere sottoposto a override per fornire la pulizia personalizzata, ma assicurarsi di chiamare anche la classe di base.
Il valore predefinito di PreCloseFrame
non esegue alcuna operazione in CDocument
. Le CDocument
classi COleDocument
derivate da e CRichEditDoc
usano questa funzione membro.
CDocument::ReadNextChunkValue
Legge il valore del blocco successivo.
virtual BOOL ReadNextChunkValue(IFilterChunkValue** ppValue);
Parametri
ppValue
[out] Quando la funzione viene restituita, ppValue
contiene il valore letto.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
CDocument::ReleaseFile
Questa funzione membro viene chiamata dal framework per rilasciare un file, rendendola disponibile per l'uso da parte di altre applicazioni.
virtual void ReleaseFile(
CFile* pFile,
BOOL bAbort);
Parametri
pFile
Puntatore all'oggetto CFile
da rilasciare.
bAbort
Specifica se il file deve essere rilasciato tramite CFile::Close
o CFile::Abort
. FALSE
se il file deve essere rilasciato tramite CFile::Close
; TRUE
se il file deve essere rilasciato tramite CFile::Abort
.
Osservazioni:
Se bAbort
è TRUE
, ReleaseFile
chiama CFile::Abort
e il file viene rilasciato. CFile::Abort
non genererà un'eccezione.
Se bAbort
è FALSE
, ReleaseFile
chiama CFile::Close
e il file viene rilasciato.
Eseguire l'override di questa funzione membro per richiedere un'azione da parte dell'utente prima del rilascio del file.
CDocument::RemoveChunk
Rimuove un blocco con l'oggetto specificato GUID
.
virtual void RemoveChunk(
REFCLSID guid,
DWORD pid);
Parametri
Guid
Specifica l'oggetto GUID
di un blocco da rimuovere.
Pid
Specifica l'oggetto PID
di un blocco da rimuovere.
Osservazioni:
CDocument::RemoveView
Chiamare questa funzione per scollegare una visualizzazione da un documento.
void RemoveView(CView* pView);
Parametri
pView
Punta alla visualizzazione da rimuovere.
Osservazioni:
Questa funzione rimuove la visualizzazione specificata dall'elenco di visualizzazioni associate al documento; imposta anche il puntatore al documento della visualizzazione su NULL
. Questa funzione viene chiamata dal framework quando una finestra cornice viene chiusa o viene chiuso un riquadro di una finestra di divisione.
Chiamare questa funzione solo se si scollega manualmente una visualizzazione. In genere si consentirà al framework di scollegare documenti e visualizzazioni definendo un CDocTemplate
oggetto per associare una classe di documento, una classe di visualizzazione e una classe finestra cornice.
Vedere l'esempio in AddView
per un'implementazione di esempio.
CDocument::ReportSaveLoadException
Chiamato se viene generata un'eccezione (in genere o CFileException
CArchiveException
) durante il salvataggio o il caricamento del documento.
virtual void ReportSaveLoadException(
LPCTSTR lpszPathName,
CException* e,
BOOL bSaving,
UINT nIDPDefault);
Parametri
lpszPathName
Punta al nome del documento salvato o caricato.
e
Punta all'eccezione generata. Può essere NULL
.
bSaving
Flag che indica l'operazione in corso; diverso da zero se il documento è stato salvato, 0 se il documento è in fase di caricamento.
nIDPDefault
Identificatore del messaggio di errore da visualizzare se la funzione non specifica uno più specifico.
Osservazioni:
L'implementazione predefinita esamina l'oggetto eccezione e cerca un messaggio di errore che descrive in modo specifico la causa. Se non viene trovato un messaggio specifico o se e
è NULL
, viene usato il nIDPDefault
messaggio generale specificato dal parametro . La funzione visualizza quindi una finestra di messaggio contenente il messaggio di errore. Eseguire l'override di questa funzione se si desidera fornire messaggi di errore aggiuntivi e personalizzati. Si tratta di un override avanzato.
CDocument::SaveModified
Chiamato dal framework prima della chiusura di un documento modificato.
virtual BOOL SaveModified();
Valore restituito
Diverso da zero se è sicuro continuare e chiudere il documento; 0 se il documento non deve essere chiuso.
Osservazioni:
L'implementazione predefinita di questa funzione visualizza una finestra di messaggio che chiede all'utente se salvare le modifiche apportate al documento, se sono state apportate. Eseguire l'override di questa funzione se il programma richiede una procedura di richiesta diversa. Si tratta di un override avanzato.
CDocument::SetChunkValue
Imposta un valore di blocco.
virtual BOOL SetChunkValue (IFilterChunkValue* pValue);
Parametri
pValue
Specifica un valore di blocco da impostare.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
CDocument::SetModifiedFlag
Chiamare questa funzione dopo aver apportato modifiche al documento.
virtual void SetModifiedFlag(BOOL bModified = TRUE);
Parametri
bModified
Flag che indica se il documento è stato modificato.
Osservazioni:
Chiamando questa funzione in modo coerente, il framework richiede all'utente di salvare le modifiche prima di chiudere un documento. In genere è consigliabile usare il valore predefinito di TRUE
per il bModified
parametro . Per contrassegnare un documento come pulito (non modificato), chiamare questa funzione con il valore FALSE
.
CDocument::SetPathName
Chiamare questa funzione per specificare il percorso completo del file del disco del documento.
virtual void SetPathName(
LPCTSTR lpszPathName,
BOOL bAddToMRU = TRUE);
Parametri
lpszPathName
Punta alla stringa da utilizzare come percorso per il documento.
bAddToMRU
Determina se il nome file viene aggiunto all'elenco dei file usati più di recente. Se TRUE
, il nome file viene aggiunto; se FALSE
, non viene aggiunto.
Osservazioni:
A seconda del valore del bAddToMRU
percorso viene aggiunto o meno all'elenco mru gestito dall'applicazione. Si noti che alcuni documenti non sono associati a un file su disco. Chiamare questa funzione solo se si esegue l'override dell'implementazione predefinita per l'apertura e il salvataggio dei file usati dal framework.
CDocument::SetTitle
Chiamare questa funzione per specificare il titolo del documento (la stringa visualizzata nella barra del titolo di una finestra cornice).
virtual void SetTitle(LPCTSTR lpszTitle);
Parametri
lpszTitle
Punta alla stringa da utilizzare come titolo del documento.
Osservazioni:
La chiamata a questa funzione aggiorna i titoli di tutte le finestre cornice che visualizzano il documento.
CDocument::UpdateAllViews
Chiamare questa funzione dopo la modifica del documento.
void UpdateAllViews(
CView* pSender,
LPARAM lHint = 0L,
CObject* pHint = NULL);
Parametri
pSender
Punta alla visualizzazione che ha modificato il documento o NULL
se devono essere aggiornate tutte le visualizzazioni.
lHint
Contiene informazioni sulla modifica.
pHint
Punta a un oggetto che archivia informazioni sulla modifica.
Osservazioni:
È necessario chiamare questa funzione dopo aver chiamato la SetModifiedFlag
funzione membro. Questa funzione informa ogni visualizzazione associata al documento, ad eccezione della visualizzazione specificata da pSender
, che il documento è stato modificato. Questa funzione viene in genere chiamata dalla classe di visualizzazione dopo che l'utente ha modificato il documento tramite una visualizzazione.
Questa funzione chiama la CView::OnUpdate
funzione membro per ognuna delle visualizzazioni del documento, ad eccezione della visualizzazione di invio, passando pHint
e lHint
. Utilizzare questi parametri per passare informazioni alle visualizzazioni relative alle modifiche apportate al documento. È possibile codificare le informazioni usando lHint
e/o definire una CObject
classe derivata da per archiviare informazioni sulle modifiche e passare un oggetto di tale classe usando pHint
. Eseguire l'override della CView::OnUpdate
funzione membro nella CView
classe derivata da per ottimizzare l'aggiornamento della visualizzazione della vista in base alle informazioni passate.
Esempio
void CExampleDoc::OnUpdateAllViews()
{
UpdateAllViews(NULL);
}
Vedi anche
Esempio MFC MDIDOCVW
Esempio MFC SNAPVW
Esempio MFC NPP
CCmdTarget
Classe
Grafico della gerarchia
CCmdTarget
Classe
CView
Classe
CDocTemplate
Classe