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 CDocument
la sérialisation, les rubriques relatives à l’architecture document/affichage et la création de documents/vues.
Hiérarchie d'héritage
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. NULL
Sinon.
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_bGetThumbnailMode
m_bSearchMode
) au niveau de votre application pour rendre ce retour TRUE
de 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 COleObjectFactory
classe dérivée de -) et une seconde fois par la InitNew
méthode (exposée par la COleServerDoc
classe 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 CDocument
dé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::Abort
de 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::Abort
de .
Notes
Si bAbort
c’est TRUE
, ReleaseFile
appelle CFile::Abort
et que le fichier est libéré. CFile::Abort
ne lève pas d’exception.
Si bAbort
c’est FALSE
le 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 NULL
le 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 CObject
classe dérivée pour stocker des informations sur les modifications et transmettre un objet de cette classe à l’aide pHint
de . Remplacez la CView::OnUpdate
fonction membre dans votre CView
classe 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