本人界面的思路,首先划分窗体,点击下面的按钮控制上面的各个按钮的显示,然后这部分自己已经实现了,然后希望单机上面不同的按钮,在左边划分出来的框框里面加载我自己定义的不同的资源(每个资源皆继承于CFormView),现在代码实现不下去了,肯定各位斧正(多文档) void CControlViewMid::SwitchToForm(int nForm)
{
    CChildFrame *pChildFrame = (CChildFrame *)GetParentFrame(); //获得CChildFrame  在CView中用GetParentFrame() 
    CControlViewMid* pControlViewMid = (CControlViewMid *)pChildFrame->m_wndSplitter1.GetPane(0,0);
    
CControlViewMid* pNewControlViewMid = (CControlViewMid *)GetDlgItem(nForm); if(pNewControlViewMid==NULL)
{
switch(nForm)
{
case IDD_DATAEDITDIALOG :
pNewControlViewMid=(CControlViewMid*)new CDataEdit;
break;
case IDD_DIFFINTEGRALDIALOG :
pNewControlViewMid=(CControlViewMid*)new CDiffIntegral;
break;
case IDD_FILTERDIALOG :
pNewControlViewMid=(CControlViewMid*)new CFilter;
break;
}
       CCreateContext context;   //将文挡和视图相连
       context.m_pCurrentDoc=pControlViewMid->GetDocument();
   pNewControlViewMid->Create(NULL, NULL, WS_BORDER|WS_CHILD ,
            CFrameWnd::rectDefault, this, nForm, &context);
       pNewControlViewMid->OnInitialUpdate();
    }
    SetActiveView(pNewControlViewMid);        //改变活动的视图
    pNewControlViewMid->ShowWindow(SW_SHOW);  //显示新的视图
    pControlViewMid->ShowWindow(SW_HIDE);  //隐藏旧的视图    if(pControlViewMid->GetRuntimeClass() ==RUNTIME_CLASS(CDataEdit))
pControlViewMid->SetDlgCtrlID(IDD_DATAEDITDIALOG);  else if(pControlViewMid->GetRuntimeClass() ==RUNTIME_CLASS(CDiffIntegral))
pControlViewMid->SetDlgCtrlID(IDD_DIFFINTEGRALDIALOG); else if(pControlViewMid->GetRuntimeClass() ==RUNTIME_CLASS(CFilter))
pControlViewMid->SetDlgCtrlID(IDD_FILTERDIALOG);    pNewControlViewMid->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
    
     delete pControlViewMid;   //删除旧视图

RecalcLayout();          //调整框架窗口

}

解决方案 »

  1.   


    上面程序的错误是:C:\Documents and Settings\liyuan\桌面\复件 YE314(自己范例)\ControlViewMid.cpp(83) : error C2248: 'CDataEdit::CDataEdit' : cannot access protected member declared in class 'CDataEdit'
            c:\documents and settings\liyuan\桌面\复件 ye314(自己范例)\dataedit.h(20) : see declaration of 'CDataEdit::CDataEdit'
    C:\Documents and Settings\liyuan\桌面\复件 YE314(自己范例)\ControlViewMid.cpp(86) : error C2248: 'CDiffIntegral::CDiffIntegral' : cannot access protected member declared in class 'CDiffIntegral'
            c:\documents and settings\liyuan\桌面\复件 ye314(自己范例)\diffintegral.h(20) : see declaration of 'CDiffIntegral::CDiffIntegral'
    C:\Documents and Settings\liyuan\桌面\复件 YE314(自己范例)\ControlViewMid.cpp(89) : error C2248: 'CFilter::CFilter' : cannot access protected member declared in class 'CFilter'
            c:\documents and settings\liyuan\桌面\复件 ye314(自己范例)\filter.h(20) : see declaration of 'CFilter::CFilter'      有哪位大神知道我这是啥问题?还有就是更好的实现方法,麻烦您说下
      

  2.   

    error C2248: 'CFilter::CFilter' : cannot access protected member declared in class 'CFilter'
    //非派生类,无法访问protect数据
      

  3.   

    bug我改出来了,可是还是实现不出来~求另外提供一个实现思路