Несколько типов документов в приложении SDI (или просто возможность MDI?)

У меня есть (может быть, смешной) вопрос о MFC - может ли приложение SDI поддерживать несколько типов документов? (Наряду с отображением диалога "выбрать документ" при создании нового документа, но это не является абсолютно необходимым, и я мог бы справиться с этим сам.) Я хочу, чтобы мое приложение вело себя как современные офисные программы, то есть каждый новый документ (некоторого типа), находящиеся в своем собственном экземпляре приложения, вместо совместного использования общего пространства с другими открытыми документами (концепция MDI).

Если SDI не может предоставить такую ​​функциональность (о чем свидетельствуют мои последние эксперименты), может кто-нибудь посоветовать мне, как обрабатывать команду "open" в MDI, чтобы открыть файл в новом экземпляре приложения? (То же самое относится и к "новой" команде.)

2 ответа

MFC называет этот тип приложения "Несколько документов верхнего уровня", и вы можете выбрать его в мастере приложений MFC:

Мастер приложений MFC

Вам просто нужно добавить шаблоны документов с помощью CWinApp::AddDocTemplate. Ссылка msdn предоставляет только пример с CMultiDocTemplate поэтому я включил здесь пример с CSingleDocTemplate это генерируется при создании нового проекта с Visual Studio.

// Register the application's document templates.  Document templates
//  serve as the connection between documents, frame windows and views
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CSDITestDoc),
    RUNTIME_CLASS(CMainFrame),       // main SDI frame window
    RUNTIME_CLASS(CSDITestView));
if (!pDocTemplate)
    return FALSE;
AddDocTemplate(pDocTemplate);
Другие вопросы по тегам