分享

MFC切换不同视类(CFROMVIEW 和CVIEW)的实现问题

 牛人的尾巴 2017-01-15
各位MFC朋友,最近在做一个小项目,遇到这样一个问题。 
点击按钮实现切换不同的view, 以前实现的都是相同基类的切换,比如他们都是CFormView 或者都是CView。 可是,现在需要切换不同基础类的View,,一个是CFormView,  一个是CView. 
如果都是CFormView, 那么可以通过通过如下代码实现(已经测试成功)
C/C++ code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void CMainFrame::SetDlgView(CRuntimeClass* pViewClass)
{
    CDocument* pDoc = GetActiveDocument();
    m_pView=(CFormView *)this->GetActiveView();
    CView* pOldView = m_pView;
    if (pOldView->GetRuntimeClass() == pViewClass)
        return;
    pOldView->SetDlgCtrlID(0);
    m_pView = DYNAMIC_DOWNCAST(CFormView, pViewClass->CreateObject());
    ASSERT(m_pView);
    if (!((CView*)m_pView)->Create(NULL, NULL, WS_CHILD | WS_BORDER,
        CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
    {
        TRACE0("Failed to create view window\n");
        return;
    }
    m_pView->ShowWindow(SW_SHOW);
    pOldView->ShowWindow(SW_HIDE);
    pDoc->AddView(m_pView);
    pDoc->RemoveView(pOldView);
    SetActiveView(m_pView);
    RecalcLayout();
}


切换Cview 方法类似,只需要把上边的基础类替换掉即可。 
现在要从Cformview切换到Cview,  上班的代码就行不通了,各位朋友有方案么? 
谢谢~
回复次数:2
yalsrs
关注
yalsrs
yalsrs
本版等级:T1
#1 得分:0 回复于: 2015-01-23 21:24:08
问题解决了, 哎,从一个工程复制过来代码,忘了修改变量类型。 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多