解决方案 »

  1.   

    这种搜搜很多的,打开对话框跟打开视图类似的
    http://wgq837051.iteye.com/blog/851915
      

  2.   


    谢谢jacksonfan,   
    我网上也搜了,没有找到合适的啊,
    我按你提供的网址内容做 了, 那个的效果是  当点击新建 时,一次会出现2个文档。
    还不是我想要的。
      

  3.   


    谢谢jacksonfan,   
    我网上也搜了,没有找到合适的啊,
    我按你提供的网址内容做 了, 那个的效果是  当点击新建 时,一次会出现2个文档。
    还不是我想要的。变通一下,这只是一种思路,要弹出对话框,那就把视图换成对话框
      

  4.   


    你确定按照那么操作的?
    我测试过了,可以启动时就打开多个,不需任何操作郁闷啊,我真的是按那上面做的,步骤写的还挺详细的。
    可是结果出来就是 点新建 后 一次弹出来2个文档。
    我又试了一次,还是没有你说的效果.
    能把你的代码给我看看吗?谢谢了。
    [email protected]
    1.在App类中创建两个public变量:                        //这一步直接添加,没有问题。
    CMultiDocTemplate * m_pDocTemplate;
    CMultiDocTemplate * m_pNewDocTemplate;
    2.在App类中的Initlnstance()函数中添加以后程序:         //这一步,把相应的类名改成自已的,IDR也换成自已的
    m_pDocTemplate = new CMultiDocTemplate(
      IDR_MULTIDTYPE,
      RUNTIME_CLASS(CMultiDocumentStudyDoc),
      RUNTIME_CLASS(CChildFrame), // custom MDI child frame
      RUNTIME_CLASS(CMultiDocumentStudyView));
     AddDocTemplate(m_pDocTemplate);
     //CMultiDocTemplate * pNewDocTemplate;
     m_pNewDocTemplate = new CMultiDocTemplate(
      IDR_MULTIDTYPE,
      RUNTIME_CLASS(CMultiDocumentStudyDoc),
      RUNTIME_CLASS(CChildFrame), // custom MDI child frame
      RUNTIME_CLASS(CNewView));
     AddDocTemplate(m_pNewDocTemplate);
    3.重载OnFileNew函数(App类中),默认只打开一个视图:     //这一步 也没啥 问题
    m_pDocTemplate->OpenDocumentFile(NULL);
    4.在Doc类中重载OnNewDocument()函数                                            //这一步也没啥 问题, 在OnNewDocument函数中加上这2句。
     CMultiDocumentStudyApp*p_app = (CMultiDocumentStudyApp*)AfxGetApp();
     EkCreateNewWindow(p_app->m_pNewDocTemplate, this ); 
         //    在自 已对应的Doc类中添加这个函数。
    CFrameWnd* CMultiDocumentStudyDoc::EkCreateNewWindow( CDocTemplate* pTemplate,CDocument* pDocument )
    {
     ASSERT_VALID( pTemplate );   
        ASSERT_VALID( pDocument );   
        CFrameWnd* pFrame =    
      pTemplate->CreateNewFrame(pDocument, NULL ); 
     CRect rect;
     GetClientRect(pFrame->m_hWnd,&rect);
     pFrame->MoveWindow(100,150,rect.Width(),rect.Height());
        if( pFrame == NULL )   
        {TRACE0( "Warning: failed to create new frame.\n" );   
        return NULL;   
        }   
        ASSERT_KINDOF( CFrameWnd, pFrame );   
        pTemplate->InitialUpdateFrame( pFrame, pDocument );   
     
        return pFrame;  
    }
      

  5.   

    3.重载OnFileNew函数(App类中),默认只打开一个视图:     //这一步 也没啥 问题
    m_pDocTemplate->OpenDocumentFile(NULL);
    这一步你怎么操作的?
    我测试的是加这一个会有2个视图,再加上另外一个
    m_pNewDocTemplate->OpenDocumentFile(NULL);会有4个视图
      

  6.   

    APP类右键,选择“添加消息响应”-选择ID_FILE_NEW
      

  7.   

    谢谢jacksonfan的耐心指导,并且还给我做了个示例。 m_pNewDocTemplate = new CMultiDocTemplate(
    IDR_TestFormTYPE,
    RUNTIME_CLASS(CTestFormDoc),
    RUNTIME_CLASS(CChildFrame), // custom MDI child frame
    RUNTIME_CLASS(CTestFormView));
    //AddDocTemplate(m_pNewDocTemplate);我仔细检查了下代码,没有发现有哪不一样,
    后来又试一试把所有的AddDocTemplate(m_pNewDocTemplate); 都 注掉 ,这次就是直接显示多个文档了。
    可是我看你提供给我的例子上面 带了 AddDocTemplate函数 的,也没出现我的这个问题啊!比较奇怪。