在多文档视图中,加入定时器,然后在class CMainFrame : public CMDIFrameWnd类中的函数OnTimer(UINT nIDEvent) 中加入如下代码:CreateNewChild(RUNTIME_CLASS(CChildFrame), IDR_TESTTYPE, 0, 0);子窗口可以被打开,但是不像第一个窗口中显示初始视图,而是空白一片。我想让后来打开的窗口和启动编译后的程序自己打开的窗口是一样的。该如何做?

解决方案 »

  1.   

    那你要调用OnInitialUpdate来初始化一下
      

  2.   

    'OnInitialUpdate' : is not a member of 'CMDIChildWnd'
      

  3.   

    在CChildFrame中加入你要显示的View试一下
      

  4.   

    OnInitialUpdate通常在CVIEW和CSCROLLVIEW的。你可以考虑象我这样
    void CMainFrame::OnUpdateViewScrolltoline(CCmdUI* pCmdUI)
    {
        CMDIChildWnd* pMDIActive = MDIGetActive();
    if (pMDIActive == NULL) 
    {
       pCmdUI->Enable(FALSE);
       return; 
    }
    CDocument* pDoc = pMDIActive->GetActiveDocument();
    ASSERT(pDoc != NULL);


    }
      

  5.   

    在CMainFrame中我没有找到OnUpdateViewScrolltoline呀!
      

  6.   

    bjskyhorse() 老兄的意思是自定义的函数。
    不过,愚认为,他还不是完全解决这个问题的办法。void CMainFrame::OnUpdateViewScrolltoline(CCmdUI* pCmdUI)
    {
        CMDIChildWnd* pMDIActive = MDIGetActive();
    if (pMDIActive == NULL) 
    {
       pCmdUI->Enable(FALSE);
       return; 
    }
    CDocument* pDoc = pMDIActive->GetActiveDocument();
    ASSERT(pDoc != NULL);

             /////////////////////////////////////////
             CMyView *pView = (CMyView *)pDoc->m_nMyView;
             pView->OnInitialUpdate();
    //其中m_nMyView是你在CDocument 中定义的那个View变量。
    }
      

  7.   

    我在CDocument未定义任何View变量呀,这个CLASS我未做任何修改。