我有一个关于 MFC 的(可能是荒谬的)问题 - SDI 应用程序可以支持多种文档类型吗?(以及在创建新文档时显示“选择文档”对话框,但这不是绝对必要的,我可以自己处理。)我想要做的是我的应用程序表现得像现代办公程序,即每个新文档(某种类型)驻留在自己的应用程序实例中,而不是与其他打开的文档共享公共空间(MDI 的概念)。
如果 SDI 不能提供这样的功能(我最近的实验表明),有人可以建议我如何处理 MDI 下的“打开”命令以在应用程序的新实例中打开文件吗?(同样适用于“新”命令。)
您只需使用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);