Открыть несколько документов из одного файла - PullRequest
0 голосов
/ 01 октября 2008

Как мне создать несколько документов при открытии одного файла в приложении MFC?

У нас есть сводный формат файла, который может содержать информацию для нескольких документов. Когда этот файл открывается, я хотел бы создать несколько CD-документов для каждой записи в файле. У нас уже есть расширенный CDocManager, поэтому я предполагаю, что это можно реализовать с помощью некоторой логики в OpenDocumentFile. Вопрос в том, как передать информацию о «Я записал x of y» обратно из класса CDocument в менеджер документов?

1 Ответ

1 голос
/ 01 октября 2008

Если у вас есть несколько производных типов CDocument, которые хранят различную информацию, вам нужен отдельный CMultiDocTemplate для каждого типа, обычно хранящийся в вашем производном классе CApp. Когда вы вызываете App.Initinstance, вы инициализируете каждый шаблон, используя что-то вроде

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

Когда вы открываете базовый документ, вы затем создаете и извлекаете дополнительные документы. Есть ряд мест, где вы можете сделать это, Serialize, вероятно, самый простой, например,

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);

}

Однако более обычным способом сделать это было бы иметь один документ с несколькими представлениями для доступа к различным частям сводного документа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...