我创建了一个单文本的窗体,又加入另一个FormView-myform,问题很简单,我在菜单中一点,弹出这个myform,我是菜鸟,尽量详细点,由代码最好,解决马上给分,在线等,急啊,谢谢

解决方案 »

  1.   

    flyelf
    我的主窗体是formview
    新窗体也是
    怎么弄
    急啊
      

  2.   

    你所说的实际上就是视图的切换。
    在子框架响应菜单消息后,显示你所需要的窗体(视图)
    在子框架的OnCreate()中创建两个视图,一个是默认的,一个是你的FormView-myform,
    然后用AddView关联到文本类(CDocument)需要显示哪个就显示哪个就行了。
    至于实现代码大致如下:
    OnCreate()
    {
     m_pMyView = new CFormView;
    m_pMyView->Create(...);
    }响应菜单消息
    OnShowMyView
    {
     m_pOldView = GetActiveView();
     m_pOldView->ShowWindow(SW_HIDE);
     m_pMyView->ShowWindow(SW_SHOW);
    }
    OnShowDefaultView()
    {
     m_pOldView->ShowWindow(SW_SHOW);
     m_pMyView->ShowWindow(SW_HIDE);
    }仅供参考,可能有更标准的实现,在网上搜寻一下。
    www.codeguru.com
    www.codeproject.com
      

  3.   

    找了个switchview
    pNewActiveView->Create(NULL,NULL,0L,CFrameWnd::rectDefault,this,nViewID,
    &context);
    这句话出错?
    另外楼上的在MainFrame .h中include "myform.h"就有一大堆错误
      

  4.   

    void CMainFrame::SwitchView(UINT nViewID)
    {
    CView *pOldActiveView =GetActiveView();
    CView *pNewActiveView=(CView*)GetDlgItem(nViewID);
    if(pNewActiveView==NULL)
    {
    switch(nViewID)
    {
    case IDD_DIALOG1: //根据新建的对话框的对话框并生成新的基于CFormView的类
    pNewActiveView=(CView*)new myForm1();
    break;
    }
    CCreateContext context;
    context.m_pCurrentDoc=pOldActiveView->GetDocument();
    pNewActiveView->Create(NULL,NULL,0L,CFrameWnd::rectDefault,this,nViewID,
    &context);
    pNewActiveView->OnInitialUpdate();
    }
    SetActiveView(pNewActiveView);
    pNewActiveView->ShowWindow(SW_SHOW);
    pOldActiveView->ShowWindow(SW_HIDE);
    //I use the win32 based function:SetWindowLong() instead of the older style:SetWindowWord()
    ::SetWindowLong(pNewActiveView->m_hWnd,GWL_ID,AFX_IDW_PANE_FIRST);
    this->RecalcLayout();
    delete pOldActiveView;
    }