2008-10-01 7 views
0

Comment procéder pour créer plusieurs documents lorsqu'un seul fichier s'ouvre dans une application MFC?Ouvrir plusieurs documents à partir d'un seul fichier

Nous avons un format de fichier agrégé qui peut contenir des informations pour plusieurs documents. Lorsque ce fichier est ouvert, je voudrais créer plusieurs CDocuments créés pour chaque enregistrement du fichier. Nous avons déjà un CDocManager étendu, donc je suppose que cela pourrait être implémenté par une logique dans OpenDocumentFile. La question est de savoir comment transmettre les informations sur "Je suis record x of y" de la classe CDocument au gestionnaire de document.

Répondre

1

Si vous avez plusieurs types dérivés de CDocument qui stockent des informations différentes, vous avez besoin d'un CMultiDocTemplate distinct pour chaque type, généralement stocké dans votre classe dérivée CApp. Lorsque vous appelez App.Initinstance vous initialisez chaque modèle en utilisant quelque chose comme

m_MyTempate1 = new CAtlasMDITemplate(IDR_RES_TYPE1, 
     RUNTIME_CLASS(CDocumentType1), 
    RUNTIME_CLASS(CChildFrameSplitter), 
    RUNTIME_CLASS(CViewType1)); 

Lorsque vous ouvrez votre document de base, vous créez ensuite et récupérer vos documents supplémentaires. Il y a un certain nombre d'endroits où vous pourriez faire ceci, Serialize étant probablement le plus facile, par ex.

void CDocumentType1::Serialize(CArchive& ar) 
{ 
// 
// Do all the document type 1 serialisation 
// 

// Create second doc 

CDocumentType2 *pDoc2 = theApp.m_MyTempate2->OpenDocumentFile(NULL); 
pDoc2->Serialize(ar); 

} 

La façon plus conventionnelle de faire cela serait bien d'avoir un seul document, avec plusieurs vues pour accéder aux différentes parties du document global.

Questions connexes