Partager via


La classe CDocument

Fournit les fonctionnalités de base pour les classes de documents définies par l'utilisateur.

Syntaxe

class CDocument : public CCmdTarget

Membres

Constructeurs publics

Nom Description
CDocument::CDocument Construit un objet CDocument.

Méthodes publiques

Nom Description
CDocument::AddView Joint un affichage au document.
CDocument::BeginReadChunks Initialise la lecture de bloc.
CDocument::CanCloseFrame Substituables avancés ; appelé avant de fermer une fenêtre frame affichant ce document.
CDocument::ClearChunkList Efface la liste de blocs.
CDocument::ClearPathName Efface le chemin d’accès de l’objet document.
CDocument::DeleteContents Appelé pour effectuer le nettoyage du document.
CDocument::FindChunk Recherche un bloc avec un GUID spécifié.
CDocument::GetAdapter Retourne un pointeur vers l’interface d’implémentation d’objet IDocument .
CDocument::GetDocTemplate Retourne un pointeur vers le modèle de document qui décrit le type du document.
CDocument::GetFile Retourne un pointeur vers l’objet souhaité CFile .
CDocument::GetFirstViewPosition Retourne la position du premier dans la liste des vues ; utilisé pour commencer l’itération.
CDocument::GetNextView Effectue une itération dans la liste des vues associées au document.
CDocument::GetPathName Retourne le chemin d’accès du fichier de données du document.
CDocument::GetThumbnail Appelé pour créer une bitmap à utiliser par le fournisseur de miniatures pour afficher la miniature.
CDocument::GetTitle Retourne le titre du document.
CDocument::InitializeSearchContent Appelé pour initialiser le contenu de recherche pour le gestionnaire de recherche.
CDocument::IsModified Indique si le document a été modifié depuis son dernier enregistrement.
CDocument::IsSearchAndOrganizeHandler Indique si cette instance d’objet CDocument a été créée pour le gestionnaire de recherche et d’organisation.
CDocument::LoadDocumentFromStream Appelé pour charger des données de document à partir du flux.
CDocument::OnBeforeRichPreviewFontChanged Appelée avant la modification de la police Rich Preview.
CDocument::OnChangedViewList Appelé après l’ajout ou la suppression d’une vue dans le document.
CDocument::OnCloseDocument Appelé pour fermer le document.
CDocument::OnCreatePreviewFrame Appelé par l’infrastructure quand il doit créer une trame d’aperçu pour Rich Preview.
CDocument::OnDocumentEvent Appelé par l’infrastructure en réponse à un événement de document.
CDocument::OnDrawThumbnail Remplacez cette méthode dans une classe dérivée pour dessiner le contenu de la miniature.
CDocument::OnLoadDocumentFromStream Appelé par l’infrastructure quand il doit charger les données de document à partir du flux.
CDocument::OnNewDocument Appelé pour créer un document.
CDocument::OnOpenDocument Appelé pour ouvrir un document existant.
CDocument::OnPreviewHandlerQueryFocus Dirige le gestionnaire d’aperçu pour retourner l’appel HWND de la GetFocus fonction.
CDocument::OnPreviewHandlerTranslateAccelerator Dirige le gestionnaire d’aperçu pour gérer une séquence de touches passée à partir de la pompe de messages du processus dans lequel le gestionnaire d’aperçu est en cours d’exécution.
CDocument::OnRichPreviewBackColorChanged Appelé lorsque la couleur d’arrière-plan d’aperçu enrichi a changé.
CDocument::OnRichPreviewFontChanged Appelé lorsque la police Rich Preview a changé.
CDocument::OnRichPreviewSiteChanged Appelé lorsque le site Rich Preview a changé.
CDocument::OnRichPreviewTextColorChanged Appelé lorsque la couleur de texte d’aperçu enrichi a changé.
CDocument::OnSaveDocument Appelé pour enregistrer le document sur le disque.
CDocument::OnUnloadHandler Appelé par l’infrastructure lorsque le gestionnaire d’aperçu est déchargé.
CDocument::PreCloseFrame Appelé avant la fermeture de la fenêtre frame.
CDocument::ReadNextChunkValue Lit la valeur de bloc suivante.
CDocument::ReleaseFile Libère un fichier pour le rendre disponible pour une utilisation par d’autres applications.
CDocument::RemoveChunk Supprime un bloc avec spécifié GUID.
CDocument::RemoveView Détache un affichage du document.
CDocument::ReportSaveLoadException Substituables avancés ; appelé lorsqu’une opération d’ouverture ou d’enregistrement ne peut pas être terminée en raison d’une exception.
CDocument::SaveModified Substituables avancés ; appelé pour demander à l’utilisateur si le document doit être enregistré.
CDocument::SetChunkValue Définit une valeur de bloc.
CDocument::SetModifiedFlag Définit un indicateur indiquant que vous avez modifié le document depuis son dernier enregistrement.
CDocument::SetPathName Définit le chemin d’accès du fichier de données utilisé par le document.
CDocument::SetTitle Définit le titre du document.
CDocument::UpdateAllViews Avertit toutes les vues que le document a été modifié.

Méthodes protégées

Nom Description
CDocument::OnFileSendMail Envoie un message électronique avec le document joint.
CDocument::OnUpdateFileSendMail Active la commande Envoyer un courrier si la prise en charge du courrier est présente.

Membres de données publics

Nom Description
CDocument::m_bGetThumbnailMode Spécifie que l’objet CDocument a été créé par dllhost pour les miniatures. Doit être archivé CView::OnDraw.
CDocument::m_bPreviewHandlerMode Spécifie que l’objet CDocument a été créé par prevhost pour Rich Preview. Doit être archivé CView::OnDraw.
CDocument::m_bSearchMode Spécifie que l’objet CDocument a été créé par l’indexeur ou d’autres applications de recherche.
CDocument::m_clrRichPreviewBackColor Spécifie la couleur d’arrière-plan de la fenêtre Rich Preview. Cette couleur est définie par hôte.
CDocument::m_clrRichPreviewTextColor Spécifie la couleur de premier plan de la fenêtre Aperçu enrichi. Cette couleur est définie par hôte.
CDocument::m_lfRichPreviewFont Spécifie la police de texte pour la fenêtre Rich Preview. Ces informations de police sont définies par hôte.

Notes

Un document représente l’unité de données que l’utilisateur ouvre généralement avec la commande Ouvrir de fichier et enregistre avec la commande Enregistrer le fichier.

CDocument prend en charge les opérations standard telles que la création d’un document, son chargement et son enregistrement. L’infrastructure manipule des documents à l’aide de l’interface définie par CDocument.

Une application peut prendre en charge plusieurs types de document ; par exemple, une application peut prendre en charge les feuilles de calcul et les documents texte. Chaque type de document a un modèle de document associé ; le modèle de document spécifie les ressources (par exemple, menu, icône ou tableau accélérateur) utilisées pour ce type de document. Chaque document contient un pointeur vers son objet associé CDocTemplate .

Les utilisateurs interagissent avec un document via les CView objets qui lui sont associés. Une vue affiche une image du document dans une fenêtre frame et interprète l’entrée utilisateur en tant qu’opérations sur le document. Un document peut avoir plusieurs vues associées. Lorsque l’utilisateur ouvre une fenêtre sur un document, l’infrastructure crée une vue et l’attache au document. Le modèle de document spécifie le type de fenêtre d’affichage et de cadre utilisé pour afficher chaque type de document.

Les documents font partie du routage des commandes standard de l’infrastructure et reçoivent par conséquent des commandes des composants d’interface utilisateur standard (par exemple, l’élément de menu Enregistrer le fichier). Un document reçoit les commandes transférées par l’affichage actif. Si le document ne gère pas de commande donnée, il transfère la commande au modèle de document qui le gère.

Quand les données d’un document sont modifiées, chacune de ses vues doit refléter ces modifications. CDocument fournit la UpdateAllViews fonction membre pour que vous avertissiez les vues de ces modifications, afin que les vues puissent se repeindre si nécessaire. L’infrastructure invite également l’utilisateur à enregistrer un fichier modifié avant de le fermer.

Pour implémenter des documents dans une application classique, vous devez effectuer les opérations suivantes :

  • Dérivez une classe de CDocument chaque type de document.

  • Ajoutez des variables membres pour stocker les données de chaque document.

  • Implémentez des fonctions membres pour lire et modifier les données du document. Les vues du document sont les utilisateurs les plus importants de ces fonctions membres.

  • Remplacez la CObject::Serialize fonction membre de votre classe de document pour écrire et lire les données du document vers et depuis le disque.

CDocument prend en charge l’envoi de votre document par courrier électronique si le support technique (MAPI) est présent. Consultez les articles MAPI et support MAPI dans MFC.

Pour plus d’informations sur CDocumentla sérialisation, les rubriques relatives à l’architecture document/affichage et la création de documents/vues.

Hiérarchie d'héritage

CObject

CCmdTarget

CDocument

Spécifications

En-tête : afxwin.h

CDocument::AddView

Appelez cette fonction pour attacher une vue au document.

void AddView(CView* pView);

Paramètres

pView
Pointe vers la vue ajoutée.

Notes

Cette fonction ajoute l’affichage spécifié à la liste des vues associées au document ; la fonction définit également le pointeur de document de la vue vers ce document. L’infrastructure appelle cette fonction lors de l’attachement d’un objet de vue nouvellement créé à un document ; cela se produit en réponse à une commande File New, File Open ou New Window ou when a splitter window.

Appelez cette fonction uniquement si vous créez et attachez manuellement une vue. En règle générale, vous allez laisser l’infrastructure connecter des documents et des vues en définissant un objet pour associer une CDocTemplate classe de document, une classe d’affichage et une classe de fenêtre frame.

Exemple

// 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

Initialise la lecture de bloc.

virtual void BeginReadChunks ();

Notes

CDocument::CanCloseFrame

Appelé par l’infrastructure avant qu’une fenêtre frame affichant le document soit fermée.

virtual BOOL CanCloseFrame(CFrameWnd* pFrame);

Paramètres

pFrame
Pointe vers la fenêtre frame d’une vue attachée au document.

Valeur de retour

Différent de zéro s’il est sûr de fermer la fenêtre cadre ; sinon 0.

Notes

L’implémentation par défaut vérifie s’il existe d’autres fenêtres frame affichant le document. Si la fenêtre frame spécifiée est la dernière qui affiche le document, la fonction invite l’utilisateur à enregistrer le document s’il a été modifié. Remplacez cette fonction si vous souhaitez effectuer un traitement spécial lorsqu’une fenêtre frame est fermée. Il s’agit d’un élément substituable avancé.

CDocument::CDocument

Construit un objet CDocument.

CDocument();

Notes

L’infrastructure gère la création de documents pour vous. Remplacez la fonction membre pour effectuer l’initialisation OnNewDocument par document ; cela est particulièrement important dans les applications SDI (Single Document Interface).

CDocument::ClearChunkList

Efface la liste de blocs.

virtual void ClearChunkList ();

Notes

CDocument::ClearPathName

Efface le chemin d’accès de l’objet document.

virtual void ClearPathName();

Notes

L’effacement du chemin d’accès à partir d’un CDocument objet entraîne l’invite de l’utilisateur lorsque le document est ensuite enregistré. Cela fait qu’une commande Enregistrer se comporte comme une commande Enregistrer sous.

CDocument::DeleteContents

Appelé par l’infrastructure pour supprimer les données du document sans détruire l’objet CDocument lui-même.

virtual void DeleteContents();

Notes

Il est appelé juste avant que le document ne soit détruit. Il est également appelé pour s’assurer qu’un document est vide avant sa réutilisation. Cela est particulièrement important pour une application SDI, qui utilise un seul document ; le document est réutilisé chaque fois que l’utilisateur crée ou ouvre un autre document. Appelez cette fonction pour implémenter une commande « Edit Clear All » ou similaire qui supprime toutes les données du document. L’implémentation par défaut de cette fonction est sans effet. Remplacez cette fonction pour supprimer les données de votre document.

Exemple

// 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

Recherche un bloc avec un GUID spécifié.

virtual POSITION FindChunk(
    REFCLSID guid,
    DWORD pid);

Paramètres

guid
Spécifie le GUID d’un bloc à rechercher.

pid
Spécifie un PID d’un bloc à rechercher.

Valeur de retour

Position dans la liste de blocs interne en cas de réussite. NULLSinon.

Notes

CDocument::GetAdapter

Retourne un pointeur vers un objet implémentant l’interface IDocument .

virtual ATL::IDocument* GetAdapter();

Valeur de retour

Pointeur vers un objet implémentant l’interface IDocument .

Notes

CDocument::GetDocTemplate

Appelez cette fonction pour obtenir un pointeur vers le modèle de document pour ce type de document.

CDocTemplate* GetDocTemplate() const;

Valeur de retour

Pointeur vers le modèle de document pour ce type de document, ou NULL si le document n’est pas géré par un modèle de document.

Exemple

// 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

Appelez cette fonction membre pour obtenir un pointeur vers un CFile objet.

virtual CFile* GetFile(
    LPCTSTR lpszFileName,
    UINT nOpenFlags,
    CFileException* pError);

Paramètres

lpszFileName
Chaîne qui est le chemin d’accès au fichier souhaité. Le chemin d’accès peut être relatif ou absolu.

pError
Pointeur vers un objet d’exception de fichier existant qui indique l’état d’achèvement de l’opération.

nOpenFlags
Mode de partage et d’accès. Spécifie l’action à entreprendre lors de l’ouverture du fichier. Vous pouvez combiner des options répertoriées dans le constructeur CFile::CFile CFile à l’aide de l’opérateur OR (|) au niveau du bit. Une autorisation d’accès et une option de partage sont requises ; les modes et modeNoInherit les modeCreate modes sont facultatifs.

Valeur de retour

Pointeur vers un objet CFile.

CDocument::GetFirstViewPosition

Appelez cette fonction pour obtenir la position du premier affichage dans la liste des vues associées au document.

virtual POSITION GetFirstViewPosition() const;

Valeur de retour

Valeur POSITION qui peut être utilisée pour l’itération avec la GetNextView fonction membre.

Exemple

//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

Appelez cette fonction pour effectuer une itération dans toutes les vues du document.

virtual CView* GetNextView(POSITION& rPosition) const;

Paramètres

rPosition
Référence à une POSITION valeur retournée par un appel précédent aux fonctions membres ou GetFirstViewPosition aux GetNextView fonctions membres. Cette valeur ne doit pas être NULL.

Valeur de retour

Pointeur vers la vue identifiée par rPosition.

Notes

La fonction retourne l’affichage identifié, rPosition puis définit rPosition la POSITION valeur de l’affichage suivant dans la liste. Si l’affichage récupéré est le dernier de la liste, rPosition il est défini sur NULL.

Exemple

//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

Appelez cette fonction pour obtenir le chemin complet du fichier disque du document.

const CString& GetPathName() const;

Valeur de retour

Chemin complet du document. Cette chaîne est vide si le document n’a pas été enregistré ou n’a pas de fichier disque associé à celui-ci.

CDocument::GetThumbnail

Crée une bitmap à utiliser par le fournisseur de miniatures pour afficher la miniature.

virtual BOOL GetThumbnail(
    UINT cx,
    HBITMAP* phbmp,
    DWORD* pdwAlpha);

Paramètres

cx
Spécifie la largeur et la hauteur de la bitmap.

phbmp
Contient un handle vers une bitmap, lorsque la fonction retourne correctement.

pdwAlpha
Contient une DWORD spécification de la valeur du canal alpha, lorsque la fonction retourne correctement.

Valeur de retour

Retourne TRUE si une bitmap pour la miniature a été créée avec succès ; sinon FALSE.

Notes

CDocument::GetTitle

Appelez cette fonction pour obtenir le titre du document, qui est généralement dérivé du nom de fichier du document.

const CString& GetTitle() const;

Valeur de retour

Titre du document.

CDocument::InitializeSearchContent

Appelé pour initialiser le contenu de recherche pour le gestionnaire de recherche.

virtual void InitializeSearchContent ();

Notes

Remplacez cette méthode dans une classe dérivée pour initialiser le contenu de recherche. Le contenu doit être une chaîne avec des parties délimitées par « ; ». Par exemple, « point ; rectangle; ole item".

CDocument::IsModified

Appelez cette fonction pour déterminer si le document a été modifié depuis son dernier enregistrement.

virtual BOOL IsModified();

Valeur de retour

Différent de zéro si le document a été modifié depuis son dernier enregistrement ; sinon 0.

CDocument::IsSearchAndOrganizeHandler

Indique si cette instance a CDocument été créée pour le gestionnaire de recherche et d’organisation.

BOOL IsSearchAndOrganizeHandler() const;

Valeur de retour

Retourne TRUE si cette instance a CDocument été créée pour le gestionnaire de recherche et d’organisation.

Notes

Actuellement, cette fonction ne retourne TRUE que pour les gestionnaires Rich Preview implémentés dans un serveur hors processus. Vous pouvez définir les indicateurs appropriés (m_bPreviewHandlerMode, , m_bGetThumbnailModem_bSearchMode) au niveau de votre application pour rendre ce retour TRUEde fonction .

CDocument::LoadDocumentFromStream

Appelé pour charger des données de document à partir d’un flux.

virtual HRESULT LoadDocumentFromStream(
    IStream* pStream,
    DWORD dwGrfMode);

Paramètres

pStream
Pointeur vers un flux. Ce flux est fourni par l’interpréteur de commandes.

dwGrfMode
Mode d’accès au flux.

Valeur de retour

S_OK si l’opération de chargement réussit, sinon HRESULT avec un code d’erreur.

Notes

Vous pouvez remplacer cette méthode dans une classe dérivée pour personnaliser la façon de charger des données à partir du flux.

CDocument::m_bGetThumbnailMode

Spécifie que l’objet CDocument a été créé par dllhost pour les miniatures. Doit être archivé CView::OnDraw.

BOOL m_bGetThumbnailMode;

Notes

TRUE indique que le document a été créé par dllhost pour les miniatures.

CDocument::m_bPreviewHandlerMode

Spécifie que l’objet CDocument a été créé par prevhost pour Rich Preview. Doit être archivé CView::OnDraw.

BOOL m_bPreviewHandlerMode;

Notes

TRUE indique que le document a été créé par prevhost pour Rich Preview.

CDocument::m_bSearchMode

Spécifie que l’objet CDocument a été créé par l’indexeur ou par une autre application de recherche.

BOOL m_bSearchMode;

Notes

TRUE indique que le document a été créé par l’indexeur ou par une autre application de recherche.

CDocument::m_clrRichPreviewBackColor

Spécifie la couleur d’arrière-plan de la fenêtre Aperçu enrichi. Cette couleur est définie par hôte.

COLORREF m_clrRichPreviewBackColor;

Notes

CDocument::m_clrRichPreviewTextColor

Spécifie la couleur de premier plan de la fenêtre Aperçu enrichi. Cette couleur est définie par hôte.

COLORREF m_clrRichPreviewTextColor;

Notes

CDocument::m_lfRichPreviewFont

Spécifie la police de texte de la fenêtre Rich Preview. Ces informations de police sont définies par hôte.

CFont m_lfRichPreviewFont;

Notes

CDocument::OnBeforeRichPreviewFontChanged

Appelée avant la modification de la police Rich Preview.

virtual void OnBeforeRichPreviewFontChanged();

Notes

CDocument::OnChangedViewList

Appelé par l’infrastructure après l’ajout ou la suppression d’une vue dans le document.

virtual void OnChangedViewList();

Notes

L’implémentation par défaut de cette fonction vérifie si la dernière vue est supprimée et, le cas échéant, supprime le document. Remplacez cette fonction si vous souhaitez effectuer un traitement spécial lorsque l’infrastructure ajoute ou supprime une vue. Par exemple, si vous souhaitez qu’un document reste ouvert même s’il n’y a pas de vues attachées, remplacez cette fonction.

CDocument::OnCloseDocument

Appelé par l’infrastructure lorsque le document est fermé, généralement dans le cadre de la commande File Close.

virtual void OnCloseDocument();

Notes

L’implémentation par défaut de cette fonction détruit toutes les trames utilisées pour afficher le document, ferme l’affichage, nettoie le contenu du document, puis appelle la DeleteContents fonction membre pour supprimer les données du document.

Remplacez cette fonction si vous souhaitez effectuer un traitement de nettoyage spécial lorsque l’infrastructure ferme un document. Par exemple, si le document représente un enregistrement dans une base de données, vous pouvez remplacer cette fonction pour fermer la base de données. Vous devez appeler la version de classe de base de cette fonction à partir de votre remplacement.

CDocument::OnCreatePreviewFrame

Appelé par l’infrastructure quand il doit créer une trame d’aperçu pour Rich Preview.

virtual BOOL OnCreatePreviewFrame();

Valeur de retour

Retourne TRUE si le frame est créé avec succès ; sinon FALSE.

Notes

CDocument::OnDocumentEvent

Appelé par l’infrastructure en réponse à un événement de document.

virtual void OnDocumentEvent(DocumentEvent deEvent);

Paramètres

deEvent
[in] Type de données énuméré qui décrit le type d’événement.

Notes

Les événements de document peuvent affecter plusieurs classes. Cette méthode est chargée de gérer les événements de document qui affectent les classes autres que la CDocument classe. Actuellement, la seule classe qui doit répondre aux événements de document est la CDataRecoveryHandler classe. La CDocument classe a d’autres méthodes substituables responsables de la gestion de l’effet sur le CDocument.

Le tableau suivant répertorie les valeurs possibles pour deEvent et les événements auxquels ils correspondent.

Valeur Événement correspondant
onAfterNewDocument Un nouveau document a été créé.
onAfterOpenDocument Un nouveau document a été ouvert.
onAfterSaveDocument Le document a été enregistré.
onAfterCloseDocument Le document a été fermé.

CDocument::OnDrawThumbnail

Remplacez cette méthode dans une classe dérivée pour dessiner la miniature.

virtual void OnDrawThumbnail(
    CDC& dc,
    LPRECT lprcBounds);

Paramètres

dc
Référence à un contexte d’appareil.

lprcBounds
Spécifie un rectangle englobant de la zone où la miniature doit être dessinée.

Notes

CDocument::OnFileSendMail

Envoie un message via l’hôte de messagerie résident (le cas échéant) avec le document en tant que pièce jointe.

void OnFileSendMail();

Notes

OnFileSendMail appels OnSaveDocument à sérialiser (enregistrer) des documents sans titre et modifiés dans un fichier temporaire, qui est ensuite envoyé par courrier électronique. Si le document n’a pas été modifié, un fichier temporaire n’est pas nécessaire ; l’original est envoyé. OnFileSendMail charge MAPI32.DLL s’il n’a pas déjà été chargé.

Implémentation spéciale pour OnFileSendMail COleDocument gérer correctement les fichiers composés.

CDocument prend en charge l’envoi de votre document par courrier électronique si le support technique (MAPI) est présent. Consultez les articles rubriques MAPI et prise en charge MAPI dans MFC.

CDocument::OnLoadDocumentFromStream

Appelé par l’infrastructure quand il doit charger les données de document à partir d’un flux.

virtual HRESULT OnLoadDocumentFromStream(
    IStream* pStream,
    DWORD grfMode);

Paramètres

pStream
Pointeur vers un flux entrant.

grfMode
Mode d’accès au flux.

Valeur de retour

S_OK si la charge réussit ; sinon, un code d’erreur.

Notes

CDocument::OnNewDocument

Appelé par l’infrastructure dans le cadre de la commande File New.

virtual BOOL OnNewDocument();

Valeur de retour

Différent de zéro si le document a été initialisé avec succès ; sinon 0.

Notes

L’implémentation par défaut de cette fonction appelle la DeleteContents fonction membre pour s’assurer que le document est vide, puis marque le nouveau document comme propre. Remplacez cette fonction pour initialiser la structure de données d’un nouveau document. Vous devez appeler la version de classe de base de cette fonction à partir de votre remplacement.

Si l’utilisateur choisit la commande File New dans une application SDI, l’infrastructure utilise cette fonction pour réinitialiser le document existant, plutôt que de en créer un. Si l’utilisateur choisit Fichier Nouveau dans une application MDI (Multiple Document Interface), l’infrastructure crée un document chaque fois, puis appelle cette fonction pour l’initialiser. Vous devez placer votre code d’initialisation dans cette fonction au lieu du constructeur pour que la commande File New soit efficace dans les applications SDI.

Notez qu’il existe des cas où OnNewDocument l’on appelle deux fois. Cela se produit lorsque le document est incorporé en tant que serveur de documents ActiveX. La fonction est d’abord appelée par la CreateInstance méthode (exposée par la COleObjectFactoryclasse dérivée de -) et une seconde fois par la InitNew méthode (exposée par la COleServerDocclasse dérivée de -).

Exemple

Les exemples suivants illustrent d’autres méthodes d’initialisation d’un objet document.

// 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

Appelé par l’infrastructure dans le cadre de la commande Ouvrir de fichier.

virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);

Paramètres

lpszPathName
Pointe vers le chemin d’accès du document à ouvrir.

Valeur de retour

Différent de zéro si le document a été correctement chargé ; sinon 0.

Notes

L’implémentation par défaut de cette fonction ouvre le fichier spécifié, appelle la DeleteContents fonction membre pour s’assurer que le document est vide, appelle CObject::Serialize pour lire le contenu du fichier, puis marque le document comme propre. Remplacez cette fonction si vous souhaitez utiliser autre chose que le mécanisme d’archivage ou le mécanisme de fichier. Par exemple, vous pouvez écrire une application où les documents représentent des enregistrements dans une base de données plutôt que des fichiers distincts.

Si l’utilisateur choisit la commande Ouvrir de fichiers dans une application SDI, l’infrastructure utilise cette fonction pour réinitialiser l’objet existant CDocument , plutôt que de en créer un. Si l’utilisateur choisit File Open dans une application MDI, l’infrastructure construit un nouvel CDocument objet à chaque fois, puis appelle cette fonction pour l’initialiser. Vous devez placer votre code d’initialisation dans cette fonction au lieu du constructeur pour que la commande File Open soit effective dans les applications SDI.

Exemple

Les exemples suivants illustrent d’autres méthodes d’initialisation d’un objet document.

// 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

Dirige le gestionnaire d’aperçu pour retourner l’élément HWND récupéré à partir de l’appel de la GetFocus fonction.

virtual HRESULT OnPreviewHandlerQueryFocus(HWND* phwnd);

Paramètres

phwnd
[out] Lorsque cette méthode est retournée, contient un pointeur vers le HWND retourné par l’appel de la GetFocus fonction à partir du thread de premier plan du gestionnaire d’aperçu.

Valeur de retour

Retourne S_OK si elle réussit ; ou une valeur d’erreur dans le cas contraire.

Notes

CDocument::OnPreviewHandlerTranslateAccelerator

Dirige le gestionnaire d’aperçu pour gérer une séquence de touches passée à partir de la pompe de messages du processus dans lequel le gestionnaire d’aperçu est en cours d’exécution.

virtual HRESULT OnPreviewHandlerTranslateAccelerator(MSG* pmsg);

Paramètres

pmsg
[in] Pointeur vers un message de fenêtre.

Valeur de retour

Si le message de frappe peut être traité par le gestionnaire d’aperçu, le gestionnaire le traite et le retourne S_OK. Si le gestionnaire d’aperçu ne peut pas traiter le message de séquence de touches, il l’offre à l’hôte via IPreviewHandlerFrame::TranslateAccelerator. Si l’hôte traite le message, cette méthode retourne S_OK. Si l’hôte ne traite pas le message, cette méthode retourne S_FALSE.

Notes

CDocument::OnRichPreviewBackColorChanged

Appelé lorsque la couleur d’arrière-plan d’aperçu enrichi a changé.

virtual void OnRichPreviewBackColorChanged();

Notes

CDocument::OnRichPreviewFontChanged

Appelé lorsque la police Rich Preview a changé.

virtual void OnRichPreviewFontChanged();

Notes

CDocument::OnRichPreviewSiteChanged

Appelé lorsque le site Rich Preview a changé.

virtual void OnRichPreviewSiteChanged();

Notes

CDocument::OnRichPreviewTextColorChanged

Appelé lorsque la couleur de texte d’aperçu enrichi a changé.

virtual void OnRichPreviewTextColorChanged();

Notes

CDocument::OnSaveDocument

Appelé par l’infrastructure dans le cadre de la commande Enregistrer ou Enregistrer sous des fichiers.

virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);

Paramètres

lpszPathName
Pointe vers le chemin complet auquel le fichier doit être enregistré.

Valeur de retour

Différent de zéro si le document a été correctement enregistré ; sinon 0.

Notes

L’implémentation par défaut de cette fonction ouvre le fichier spécifié, appelle CObject::Serialize pour écrire les données du document dans le fichier, puis marque le document comme étant propre. Remplacez cette fonction si vous souhaitez effectuer un traitement spécial lorsque l’infrastructure enregistre un document. Par exemple, vous pouvez écrire une application où les documents représentent des enregistrements dans une base de données plutôt que des fichiers distincts.

CDocument::OnUnloadHandler

Appelé par l’infrastructure lorsque le gestionnaire d’aperçu est déchargé.

virtual void OnUnloadHandler();

Notes

CDocument::OnUpdateFileSendMail

Active la commande si la ID_FILE_SEND_MAIL prise en charge du courrier (MAPI) est présente.

void OnUpdateFileSendMail(CCmdUI* pCmdUI);

Paramètres

pCmdUI
Pointeur vers l’objet CCmdUI associé à la ID_FILE_SEND_MAIL commande.

Notes

Sinon, la fonction supprime la ID_FILE_SEND_MAIL commande du menu, y compris les séparateurs ci-dessus ou en dessous de l’élément de menu, le cas échéant. MAPI est activé s’il MAPI32.DLL est présent dans le chemin d’accès et, dans la section [Courrier] du WIN.INI fichier, MAPI=1. La plupart des applications mettent cette commande dans le menu Fichier.

CDocument prend en charge l’envoi de votre document par courrier électronique si le support technique (MAPI) est présent. Consultez les articles rubriques MAPI et prise en charge MAPI dans MFC.

CDocument::PreCloseFrame

Cette fonction membre est appelée par l’infrastructure avant la destruction de la fenêtre frame.

virtual void PreCloseFrame(CFrameWnd* pFrame);

Paramètres

pFrame
Pointeur vers l’objet CFrameWnd associé CDocument .

Notes

Il peut être substitué pour fournir un nettoyage personnalisé, mais veillez également à appeler la classe de base.

La valeur par défaut ne PreCloseFrame fait rien dans CDocument. Classes CDocumentdérivées COleDocument et CRichEditDoc utilisation de cette fonction membre.

CDocument::ReadNextChunkValue

Lit la valeur de bloc suivante.

virtual BOOL ReadNextChunkValue(IFilterChunkValue** ppValue);

Paramètres

ppValue
[out] Lorsque la fonction est retournée, ppValue contient la valeur qui a été lue.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

CDocument::ReleaseFile

Cette fonction membre est appelée par l’infrastructure pour libérer un fichier, le rendant disponible pour une utilisation par d’autres applications.

virtual void ReleaseFile(
    CFile* pFile,
    BOOL bAbort);

Paramètres

pFile
Pointeur vers l’objet CFile à libérer.

bAbort
Spécifie si le fichier doit être libéré à l’aide de l’un ou CFile::Abortde l’autre CFile::Close . FALSE si le fichier doit être libéré à l’aide CFile::Close; TRUE si le fichier doit être libéré à l’aide CFile::Abortde .

Notes

Si bAbort c’est TRUE, ReleaseFile appelle CFile::Abortet que le fichier est libéré. CFile::Abort ne lève pas d’exception.

Si bAbort c’est FALSEle cas, ReleaseFile les appels CFile::Close et le fichier sont libérés.

Remplacez cette fonction membre pour exiger une action de l’utilisateur avant la publication du fichier.

CDocument::RemoveChunk

Supprime un bloc avec le bloc spécifié GUID.

virtual void RemoveChunk(
    REFCLSID guid,
    DWORD pid);

Paramètres

Guid
Spécifie le GUID bloc à supprimer.

Pid
Spécifie le PID bloc à supprimer.

Notes

CDocument::RemoveView

Appelez cette fonction pour détacher une vue d’un document.

void RemoveView(CView* pView);

Paramètres

pView
Pointe vers la vue en cours de suppression.

Notes

Cette fonction supprime l’affichage spécifié de la liste des vues associées au document ; il définit également le pointeur de document de l’affichage sur NULL. Cette fonction est appelée par l’infrastructure lorsqu’une fenêtre frame est fermée ou qu’un volet d’une fenêtre de fractionnement est fermé.

Appelez cette fonction uniquement si vous détachez manuellement une vue. En règle générale, vous allez laisser l’infrastructure détacher des documents et des vues en définissant un objet pour associer une CDocTemplate classe de document, une classe d’affichage et une classe de fenêtre frame.

Consultez l’exemple à l’adresse d’un AddView exemple d’implémentation.

CDocument::ReportSaveLoadException

Appelé si une exception est levée (généralement a CFileException ou CArchiveException) lors de l’enregistrement ou du chargement du document.

virtual void ReportSaveLoadException(
    LPCTSTR lpszPathName,
    CException* e,
    BOOL bSaving,
    UINT nIDPDefault);

Paramètres

lpszPathName
Pointe vers le nom du document en cours d’enregistrement ou de chargement.

e
Pointe vers l’exception levée. Peut avoir la valeur NULL.

bSaving
Indicateur indiquant l’opération en cours ; différent de zéro si le document était enregistré, 0 si le document était chargé.

nIDPDefault
Identificateur du message d’erreur à afficher si la fonction ne spécifie pas un message d’erreur spécifique.

Notes

L’implémentation par défaut examine l’objet d’exception et recherche un message d’erreur qui décrit spécifiquement la cause. Si un message spécifique est introuvable ou si e tel est NULLle cas, le message général spécifié par le nIDPDefault paramètre est utilisé. La fonction affiche ensuite une boîte de message contenant le message d’erreur. Remplacez cette fonction si vous souhaitez fournir des messages d’échec supplémentaires personnalisés. Il s’agit d’un élément substituable avancé.

CDocument::SaveModified

Appelé par l’infrastructure avant la fermeture d’un document modifié.

virtual BOOL SaveModified();

Valeur de retour

Différent de zéro s’il est sûr de continuer et de fermer le document ; 0 si le document ne doit pas être fermé.

Notes

L’implémentation par défaut de cette fonction affiche une boîte de message demandant à l’utilisateur s’il faut enregistrer les modifications apportées au document, le cas échéant. Remplacez cette fonction si votre programme nécessite une procédure d’invite différente. Il s’agit d’un élément substituable avancé.

CDocument::SetChunkValue

Définit une valeur de bloc.

virtual BOOL SetChunkValue (IFilterChunkValue* pValue);

Paramètres

pValue
Spécifie une valeur de bloc à définir.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

CDocument::SetModifiedFlag

Appelez cette fonction après avoir apporté des modifications au document.

virtual void SetModifiedFlag(BOOL bModified = TRUE);

Paramètres

bModified
Indicateur indiquant si le document a été modifié.

Notes

En appelant cette fonction de manière cohérente, vous assurez que l’infrastructure invite l’utilisateur à enregistrer les modifications avant de fermer un document. En règle générale, vous devez utiliser la valeur par défaut du TRUE bModified paramètre. Pour marquer un document comme propre (non modifié), appelez cette fonction avec la valeur FALSE.

CDocument::SetPathName

Appelez cette fonction pour spécifier le chemin complet du fichier disque du document.

virtual void SetPathName(
    LPCTSTR lpszPathName,
    BOOL bAddToMRU = TRUE);

Paramètres

lpszPathName
Pointe vers la chaîne à utiliser comme chemin d’accès du document.

bAddToMRU
Détermine si le nom de fichier est ajouté à la liste de fichiers (MRU) la plus récente. Si TRUE, le nom de fichier est ajouté ; si FALSE, il n’est pas ajouté.

Notes

Selon la valeur du bAddToMRU chemin d’accès est ajoutée ou non ajoutée à la liste MRU gérée par l’application. Notez que certains documents ne sont pas associés à un fichier disque. Appelez cette fonction uniquement si vous substituez l’implémentation par défaut pour l’ouverture et l’enregistrement de fichiers utilisés par l’infrastructure.

CDocument::SetTitle

Appelez cette fonction pour spécifier le titre du document (chaîne affichée dans la barre de titre d’une fenêtre frame).

virtual void SetTitle(LPCTSTR lpszTitle);

Paramètres

lpszTitle
Pointe vers la chaîne à utiliser comme titre du document.

Notes

L’appel de cette fonction met à jour les titres de toutes les fenêtres frame qui affichent le document.

CDocument::UpdateAllViews

Appelez cette fonction une fois le document modifié.

void UpdateAllViews(
    CView* pSender,
    LPARAM lHint = 0L,
    CObject* pHint = NULL);

Paramètres

pSender
Pointe vers la vue qui a modifié le document ou NULL si toutes les vues doivent être mises à jour.

lHint
Contient des informations sur la modification.

pHint
Pointe vers un objet stockant des informations sur la modification.

Notes

Vous devez appeler cette fonction après avoir appelé la SetModifiedFlag fonction membre. Cette fonction informe chaque affichage attaché au document, à l’exception de l’affichage spécifié par pSender, que le document a été modifié. Vous appelez généralement cette fonction à partir de votre classe d’affichage une fois que l’utilisateur a modifié le document par le biais d’une vue.

Cette fonction appelle la CView::OnUpdate fonction membre pour chacune des vues du document, à l’exception de l’affichage d’envoi, du passage pHint et lHint. Utilisez ces paramètres pour transmettre des informations aux vues sur les modifications apportées au document. Vous pouvez encoder des informations à l’aide lHint et/ou définir une CObjectclasse dérivée pour stocker des informations sur les modifications et transmettre un objet de cette classe à l’aide pHintde . Remplacez la CView::OnUpdate fonction membre dans votre CViewclasse dérivée pour optimiser la mise à jour de l’affichage de la vue en fonction des informations transmises.

Exemple

void CExampleDoc::OnUpdateAllViews()
{
   UpdateAllViews(NULL);
}

Voir aussi

Exemple MFC MDIDOCVW
Exemple MFC SNAPVW
Exemple MFC NPP
CCmdTarget Classe
Graphique hiérarchique
CCmdTarget Classe
CView Classe
CDocTemplate Classe