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