SDI应用程序中的多种文档类型(或仅仅是MDI的功能?)

时间:2015-11-19 09:04:20

标签: c++ mfc mdi sdi

我有一个关于MFC的(可能是荒谬的)问题 - SDI应用程序可以支持多个文档类型吗? (同时在创建新文档时显示" choose-document"对话,但这并非绝对必要,我自己也可以自己处理。)我想做的是我的应用程序表现得像现代办公程序,即每个新文档(某种类型)驻留在其自己的应用程序实例中,而不是与其他开放文档(MDI的概念)共享公共空间。

如果SDI不能提供这样的功能(我最近的实验建议),有人可以建议我如何处理"打开" MDI下的命令在应用程序的新实例中打开文件? (这同样适用于" new"命令。)

2 个答案:

答案 0 :(得分:1)

MFC将此应用程序类型称为“多个顶级文档”,您可以在MFC应用程序向导中选择它:

MFC App Wizard

答案 1 :(得分:0)

您只需使用CWinApp::AddDocTemplate添加文档模板 msdn链接仅提供CMultiDocTemplate的示例,因此我在此处包含了使用visual studio创建新项目时生成的CSingleDocTemplate示例。

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