我选择建一个单文档"abcd",在第一个页面不选择Document/View 支持,下面的都按默认设置,建好后再自己增加一个CLeftView和CRightView,再MainFrm的OnCreateClient中增加分割,
if (!m_wndSplitter.CreateStatic(this, 1, 2))
return FALSE; if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView),CSize(200,200), pContext) ||
!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CRightView),CSize(200,200), pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
return TRUE;然后我在CLiftView的OnInitialUpdate中增加自己的初始代码,
void CLeftView::OnInitialUpdate() 
{
CFormView::OnInitialUpdate();
m_Tab.InsertItem(0,"tab1")
}搞好后,程序可以运行,但是在CLeftView的TAB控件中却出现了2个相同的"tab1"页面,后来自己跟踪了一下,每次启动CLeftView和CRightView中的OnInitialUpdate()都执行了2次,但我的程序没有地方建立CLeftView和CRightView,只有在MainFrm中的OnCreateClient中m_wndSplitter增加过,不知道为什么会执行2次,希望高手帮帮忙。

解决方案 »

  1.   

    问题知道了,因为程序执行后会自动New一个文档,而我在增加到m_wndSplitter时View中的OnInitialUpdate也会执行一次,所以会执行两次,但现在的问题是怎么样让程序一开始不自动新建,程序建立主框架时的代码是这样的
    CMainFrame* pFrame = new CMainFrame;
    m_pMainWnd = pFrame; // create and load the frame with its resources pFrame->LoadFrame(IDR_MAINFRAME,
    WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,
    NULL);
    // The one and only window has been initialized, so show and update it.

    pFrame->ShowWindow(SW_SHOW);
    pFrame->UpdateWindow();
    求助怎么样让他不自动新建?
      

  2.   

    我上面的想法可能不对,在程序开始根本没有CSingleDocTemplate,我自己建立的两个视CLeftView和CRightView,也没有加到CSingleDocTemplate中去,只在建立分割窗的时候RUNTIME_CLASS了一下,但是另一次主窗口是怎么让他执行的呢?