我原来是MDI程序,如果不改变代码的话,直接点击VS自动生成程序中的
“新建”,可以正确生成文档。但我现在想在原来的基础上,当点击“新建”时,先弹出对话框设置文档大小,
再出现文档。当我重载CMainFrame::OnFileNew之后,原来的新建文档的功能不存在了
想知道,调用哪个函数,可以重新恢复VS2008 Wizard生成的那个功能?
或是只能自己重新写代码来实现此功能?谢谢!

解决方案 »

  1.   

    在DOC类的:
    OnNewDocument()
    里添加弹出对话框的代码
      

  2.   

    这个好办,你新建一个工程,要跟原来的一样,这样原来的代码怎么实现的ID_FILE_NEW你就知道了。我记得默认就是ID_FILE_NEW直接映射了
      

  3.   

    应该从cview类的函数OnInitialUpdate 中进行处理,也可以从CDocument类的OnNewDocument函数中进行处理,但从一个CDocument对应多个CView来看,从OnNewDocument比较合适: BOOL CMFCMDIDoc::OnNewDocument()
    {
    if (!CDocument::OnNewDocument())
    return FALSE; // TODO: add reinitialization code here
    // (SDI documents will reuse this document)
    POSITION pos = GetFirstViewPosition();
        while (pos != NULL)
        {
      CView* pView = GetNextView(pos);
      (pView->GetParent())->MoveWindow(100,200,300,400);//改成你需要的文档大小
        }    return TRUE;
    }
      

  4.   

    必须包含CMyDlg头文件BOOL CMyDoc::OnNewDocument()
    {
        if (!CDocument::OnNewDocument())
            return FALSE;
        CMyDlg mydlg;
        if (mydlg.DoModal() != IDOK)
        {
            return FALSE;
        }
     
        return TRUE;
    }
      

  5.   

    噢,谢谢!
    那弹出对话框的代码,是应该加到
    CDocument::OnNewDocument之前,还是之后啊。
    我感觉是不是加到之前?谢谢!
      

  6.   

    之前,之后都行,因为只要这个函数返回真,才会显示VIEW类
      

  7.   

    onfilenew是cWinApp下的私有成员,你的全局类下继承自cWinApp,这样不用我多说怎么做了吧