在CApp中,initinstance函数中将pDcoTemplate定义为MultiDocTemplate* ,然后
pDocTemplate = new CSingleDocTemplate
改为
  pDocTemplate = new CMultiDocTemplate

解决方案 »

  1.   

    还有,还要派生出一个字窗口类,具体情况你在生成一个mdi
    的程序,自己对照以下就好了
      

  2.   

    上面所说的我都做过了,关键是现在出了一个问题:
    在执行到((CFrameWnd*)m_pMainWnd)->LoadFrame(IDR_MAINFRAME);时,出错:
    unhandled exception in *.exe: 0xc000005:Access violation
      

  3.   

    你需要定义IDR_MAINFRAME的MENU。
      

  4.   

    1、先用向导新建立一个MDI的工程当然名称要与SDI的名称一样,只不过要放在不同的目录下,在新工程目录下的ChildFrm.h和ChildFrm.cpp拷贝到原来的SDI的工程目录下,打开SDI工程,将刚拷入的两个文件加入到工程中;
    2、修改MainFrm.h
      将class CMainFrame : public CFrameWnd替换为class CMainFrame : public CMDIFrameWnd;
    将DECLARE_DYNCREATE(CMainFrame)改为 DECLARE_DYNAMIC(CMainFrame)并移到protected:的前面,将protected:改为public:
    3、修改MainFrm.cpp
       将所有的CFrameWnd替换为CMDIFrameWnd;
       将IMPLEMENT_DYNCREATE修改为IMPLEMENT_DYNAMIC;
    4、修改app文件,即“工程名.cpp”文件
    在文件开头加入  #include "ChildFrm.h";
    用MDI中的BOOL CEApp::InitInstance(){.......}的整个语句块替换掉SDI的语句块(当然,要是在此处有自己加入的语句,替换后再根据需要修改)。
    5、添加一个ID为IDR_ETYPE的菜单,这样就有了两个菜单,根据需要自己修改即可。
      

  5.   

    应该
    CMainFrame* pMainFrame = new CMainFrame;
    if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
                         return FALSE;
    m_pMainWnd = pMainFrame;
      

  6.   

    我做的和zjh73一样,就是有错
      

  7.   

    提醒,根据<MFC深入浅出>
    台湾的候先生说:这是一个不可逆的过程.所以可以说您做的是无用功.有兴趣可以翻翻候先生的书.关于SINGLE 和多文档的书也可以试验一下改成一图多视的形式.
      

  8.   

    <MFC深入浅出>中什么地方说了?我想在子窗口中加入工具条,所以一图多视可能不行。