Несколько типов документов в приложении SDI (или просто возможность MDI?)
У меня есть (может быть, смешной) вопрос о MFC - может ли приложение SDI поддерживать несколько типов документов? (Наряду с отображением диалога "выбрать документ" при создании нового документа, но это не является абсолютно необходимым, и я мог бы справиться с этим сам.) Я хочу, чтобы мое приложение вело себя как современные офисные программы, то есть каждый новый документ (некоторого типа), находящиеся в своем собственном экземпляре приложения, вместо совместного использования общего пространства с другими открытыми документами (концепция MDI).
Если SDI не может предоставить такую функциональность (о чем свидетельствуют мои последние эксперименты), может кто-нибудь посоветовать мне, как обрабатывать команду "open" в MDI, чтобы открыть файл в новом экземпляре приложения? (То же самое относится и к "новой" команде.)
2 ответа
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);