Partager via


CMultiDocTemplate, classe

Définit un modèle de document qui implémente l'interface multidocument (MDI).

Syntaxe

class CMultiDocTemplate : public CDocTemplate

Membres

Les fonctions membres de cette classe sont virtuelles. Pour obtenir de la documentation, consultez CDocTemplate et CCmdTarget .

Constructeurs publics

Nom Description
CMultiDocTemplate ::CMultiDocTemplate Construit un objet CMultiDocTemplate.

Notes

Une application MDI utilise la fenêtre de trame principale en tant qu’espace de travail dans lequel l’utilisateur peut ouvrir zéro ou plusieurs fenêtres de cadre de document, chacune affichant un document. Pour obtenir une description plus détaillée de l’interface MDI, consultez les instructions relatives à l’interface Windows pour la conception logicielle.

Un modèle de document définit les relations entre trois types de classes :

  • Classe de document, que vous dérivez de CDocument.

  • Classe d’affichage, qui affiche les données de la classe de document répertoriée ci-dessus. Vous pouvez dériver cette classe de CView, , ou CEditViewCFormView. CScrollView (Vous pouvez également utiliser CEditView directement.)

  • Classe de fenêtre frame, qui contient l’affichage. Pour un modèle de document MDI, vous pouvez dériver cette classe ou CMDIChildWnd, si vous n’avez pas besoin de personnaliser le comportement des fenêtres d’images de document, vous pouvez utiliser CMDIChildWnd directement sans dériver votre propre classe.

Une application MDI peut prendre en charge plusieurs types de documents, et les documents de différents types peuvent être ouverts en même temps. Votre application a un modèle de document pour chaque type de document pris en charge. Par exemple, si votre application MDI prend en charge les feuilles de calcul et les documents texte, l’application a deux CMultiDocTemplate objets.

L’application utilise le ou les modèles de document lorsque l’utilisateur crée un document. Si l’application prend en charge plusieurs types de documents, l’infrastructure obtient les noms des types de documents pris en charge à partir des modèles de document et les affiche dans une liste de la boîte de dialogue Fichier Nouveau. Une fois que l’utilisateur a sélectionné un type de document, l’application crée un objet de classe de document, un objet fenêtre frame et un objet d’affichage et les attache les uns aux autres.

Vous n’avez pas besoin d’appeler des fonctions membres de CMultiDocTemplate l’exception du constructeur. L’infrastructure gère les CMultiDocTemplate objets en interne.

Pour plus d’informations sur CMultiDocTemplate, consultez modèles de document et processus de création de document/affichage.

Hiérarchie d'héritage

CObject

CCmdTarget

CDocTemplate

CMultiDocTemplate

Spécifications

En-tête : afxwin.h

CMultiDocTemplate ::CMultiDocTemplate

Construit un objet CMultiDocTemplate.

CMultiDocTemplate(
    UINT nIDResource,
    CRuntimeClass* pDocClass,
    CRuntimeClass* pFrameClass,
    CRuntimeClass* pViewClass);

Paramètres

nIDResource
Spécifie l’ID des ressources utilisées avec le type de document. Cela peut inclure des ressources de menu, d’icône, d’accélérateur et de chaîne.

La ressource de chaîne se compose d’un maximum de sept sous-chaînes séparées par le caractère '\n'(le caractère '\n’est nécessaire en tant que espace réservé si une sous-chaîne n’est pas incluse ; toutefois, les caractères de fin '\n’ne sont pas nécessaires) ; ces sous-chaînes décrivent le type de document. Pour plus d’informations sur les sous-chaînes, consultez CDocTemplate ::GetDocString. Cette ressource de chaîne se trouve dans le fichier de ressources de l’application. Par exemple :

// MYCALC.RC
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
  IDR_SHEETTYPE "\nSheet\nWorksheet\nWorksheets (*.myc)\n.myc\n MyCalcSheet\nMyCalc Worksheet"
END

La chaîne commence par un caractère « \n », car la première sous-chaîne n’est pas utilisée pour les applications MDI et n’est donc pas incluse. Vous pouvez modifier cette chaîne à l’aide de l’éditeur de chaîne ; la chaîne entière apparaît sous la forme d’une entrée unique dans l’éditeur de chaînes, et non pas comme sept entrées distinctes.

Pour plus d’informations sur ces types de ressources, consultez Éditeurs de ressources.

pDocClass
Pointe vers l’objet CRuntimeClass de la classe de document. Cette classe est une CDocumentclasse dérivée que vous définissez pour représenter vos documents.

pFrameClass
Pointe vers l’objet CRuntimeClass de la classe frame-window. Cette classe peut être une CMDIChildWndclasse dérivée, ou elle peut être CMDIChildWnd elle-même si vous souhaitez un comportement par défaut pour vos fenêtres d’images de document.

pViewClass
Pointe vers l’objet CRuntimeClass de la classe d’affichage. Cette classe est une CViewclasse dérivée que vous définissez pour afficher vos documents.

Notes

Allouez dynamiquement un CMultiDocTemplate objet pour chaque type de document pris en charge par votre application et passez-les à CWinApp::AddDocTemplate partir de la InitInstance fonction membre de votre classe d’application.

Exemple

// Code fragment from CMyApp::InitInstance

// Establish all of the document types
// supported by the application

AddDocTemplate(new CMultiDocTemplate(IDR_BRUSHDOCTYPE,
   RUNTIME_CLASS(CBrushDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CBrushView)));

AddDocTemplate(new CMultiDocTemplate(IDR_DCDOCTYPE,
   RUNTIME_CLASS(CDCDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CDCView)));

Voici un deuxième exemple.

// Code fragment taken from CMyApp::InitInstance

// Normally, an application creates a document 
// template and registers it with MFC as a part
// of its initialization.

// IDR_EXAMPLEDOCTYPE is a resource ID string; see
// the CDocTemplate class overview documentation
// for more information on its format.

// The next three parameters use the RUNTIME_CLASS()
// macro to get runtime type information for the doc,
// frame, and view classes that will be associated
// by the template.

pDocTemplate = new CMultiDocTemplate(IDR_EXAMPLEDOCTYPE,
   RUNTIME_CLASS(CExampleDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CExampleView));
if (!pDocTemplate)
return FALSE;

// After the following call, MFC is aware of the doc
// template and will free it when the application is
// shut down. The doc templates known to MFC will
// automatically be used when CWinApp:OnFileOpen()
// or CWinApp::OnFileNew() are called.

AddDocTemplate(pDocTemplate);

Voir aussi

CDocTemplate, classe
Graphique hiérarchique
CDocTemplate, classe
CSingleDocTemplate, classe
CWinApp, classe