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à

CObject

CCmdTarget

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 CDocumentclassi 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::Aborte 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 CObjectclasse 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 CViewclasse 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