如题,就像CView中的新建一样,

解决方案 »

  1.   

    1. create view
    m_pSettingsView = new CSettingsView;
    viewID++;
    m_pSettingsView->Create(NULL,_T("CSettingsView"),WS_CHILD, rect, m_pMainWnd, viewID, &newContext);
    m_pSettingsView->SendMessage(WM_INITIALUPDATE, 0, 0);
    2.switch view
    CView* CxxxApp::SwitchView(CView* pShowView)
    {
    CView* pActiveView =
    ((CFrameWnd*) m_pMainWnd)->GetActiveView();
    CView* pNewView= pShowView;
    // Exchange view window IDs so RecalcLayout() works.
    #ifndef _WIN32
    UINT temp = ::GetWindowWord(pActiveView->m_hWnd, GWW_ID);
    ::SetWindowWord(pActiveView->m_hWnd, GWW_ID, ::GetWindowWord(pNewView->m_hWnd, GWW_ID));
    ::SetWindowWord(pNewView->m_hWnd, GWW_ID, temp);
    #else
    UINT temp = ::GetWindowLong(pActiveView->m_hWnd, GWL_ID);
    ::SetWindowLong(pActiveView->m_hWnd, GWL_ID, ::GetWindowLong(pNewView->m_hWnd, GWL_ID));
    ::SetWindowLong(pNewView->m_hWnd, GWL_ID, temp);
    #endif pActiveView->ShowWindow(SW_HIDE);
    pNewView->ShowWindow(SW_SHOW);
    ((CFrameWnd*) m_pMainWnd)->SetActiveView(pNewView);
    ((CFrameWnd*) m_pMainWnd)->RecalcLayout();
    pNewView->Invalidate();
    return pActiveView;
    }
      

  2.   

    请问上述程序中的m_pSettingView是什么类型呢,那个SwitemView是个自定义的函数吧,
    在上面怎么没有调用呢,请指教
      

  3.   

    看到 masterz了~~
    动态创建。然后给他传递WM_INITIALUPDATE消息。使他active,并重新计算frmwnd大小。