2 pingkai1217 pingkai1217 于 2016.03.12 10:17 提问

MFC 单文档视图切分视图调用问题

在MainFrm.cpp 里对主视图进行了切分
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class

//

CRect rc;

// 获取框架窗口客户区的CRect对象   
GetClientRect(&rc);

// 创建静态分割窗口,三行一列   
if (!m_wndSplitter.CreateStatic(this, 3, 1))
    return FALSE;

// 创建上面窗格中的视图   
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CTopview), CSize(rc.bottom, rc.right / 9), pContext))
    return FALSE;

// 创建中间窗格中的视图   
if (!m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(CCentview), CSize(rc.Width(), rc.right / 7 * 5.9), pContext))
    return FALSE;
// 创建下面窗格中的视图 
if (!m_wndSplitter.CreateView(2, 0, RUNTIME_CLASS(Cfootview), CSize(rc.bottom, rc.right / 7), pContext))
    return FALSE;
centview = (CCentview*)m_wndSplitter.GetPane(1, 0);

m_wndSplitter.HideSplitter();

m_isSplitter = TRUE;
return TRUE;

}
主要是切割成三行视图,中间也就是第二行视图是根据第一行视图里按钮的事件进行切换的 比如现在有 treeview, listview这2个视图;
切换时使用这种方式
void CMainFrame::SwitchToView(int nViewType)
{
CView* pView = (CView*)m_wndSplitter.GetPane(1,0);
CRect rcRight, rcFrame;
pView->GetClientRect(&rcRight);
GetClientRect(&rcFrame);

switch (nViewType)
{
 case CENTVIEW:     //treeview
  {
     if (!pView->IsKindOf(RUNTIME_CLASS(Ctreeview)))
    {
        //删除旧的视图
        m_wndSplitter.DeleteView(1,0);
        //创建新的视图
        m_wndSplitter.CreateView(1,0, RUNTIME_CLASS(Ctreeview),
            CSize(rcRight.Width(), rcRight.Height()), NULL);
        //调整分布
        m_wndSplitter.RecalcLayout();
        treeview = (Ctreeview*)m_wndSplitter.GetPane(1,0);

        }
     break;
   }


    case CLOG:      //CLOG
    {
        if (!pView->IsKindOf(RUNTIME_CLASS(Clistview)))
        {
            //删除旧的视图
            m_wndSplitter.DeleteView(1,0);
            //创建新的视图
            m_wndSplitter.CreateView(1,0, RUNTIME_CLASS(Clistview),
            CSize(rcRight.Width(),rcRight.Height()),NULL);
            //调整分布
            m_wndSplitter.RecalcLayout();
            listview = (Clistview*)m_wndSplitter.GetPane(1,0);

        }
        break;
    }

default:
    break;
}

}
视图切换没有问题,现在主界面使用treeview视图 里面是有数据的,当我切换到listview视图如果给这个视图添加数据比如加个函数在OnInitialUpdate里调用 就会报错
图片说明
请大神看看是什么原因 应该怎么修改
编译器是 VS2013

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
CSplitterWnd类分割MFC单文档应用程序窗口
前言 网上其他大牛已经对MFC窗口分割进行了详细介绍,这里主要用意是分享我在做窗口分割的经验,若是对大家能够有所帮助的话,我倍感荣幸,由于本人水平有限,如若本文中出现错误,望大家见谅与指正! 工具函数 MFC窗口分割的作案工具主要是CSplitterWnd类成员函数CreateStatic()与CreateView(),CreateStatic()函数用于分割窗口,可以利用返回值判断分割是否
MFC单文档视图拆分窗口
第一步:准备2个视图类(如CTViewOne, CTViewTwo)第二步:在CMainFrame类的头文件中添加数据成员变量://MainFrm.h protected: CSplitterWnd m_wndSplitter;第三步:重载CMainFrame类的OnCreateClient函数:BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT l
MFC对单文档进行窗口分割。
新建单文档工程,在MainFrm.cpp中添加虚函数OnCreateClient(); 1、在虚函数中添加代码: BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { // TODO: 在此添加专用代码和/或调用基类 CRect rect; GetClientRect(&re
mfc:单文档中对话框类调用视图类和框架类成员变量的实例
建立一个单文档mfc程序,设计一个菜单按钮,可以弹出一个对话框。在对话框中使用视图类和框架类中的变量。 界面如下对话框图:框架类的成员变量index:视图类的成员变量m_str:button1的响应函数//选择下拉列表的一项,在编辑框中显示出来。其中用到index和m_str void CDialog1::OnBnClickedButton1() { // TODO: 在此添加控件通知处理
MFC中视图分割(静态分割和动态分割)和视图间消息传递
MFC中视图分割是界面开发当中首先要解决的问题,在此做简单总结。 在此,拿一个工程InfoClt做例: 工程中文件如下: 现在要对主视图做分割,分割的两部分分别是InfoCltView、SockView。 分割代码如下: MainFrm.h [html] view plaincopy span style="font
MFC单文档多视图之间的数据传递
所谓的单文档多视图的程序,可以理解c
MFC单文档中更新View的update操作
视图生成后,想要更新VIew类中的onupdate操作:  GetDocument()->UpdateAllView() 获得文档指针后调用UpdateAllView() void UpdateAllViews( CView* pSender, LPARAM lHint = 0L, CObject* pHint = NULL ); UpdateAllViews会通知除了pSender外
MFC的单文档视图结构(摘录)
文档        文档对象用于管理和维护数据,包括保存数据、取出数据以及修改数据等操作,在数据被修改以后,文档可以通知其对应的所有视图更新显示。    视图        视图对象将文档中的数据可视化,负责从文档对象中取出数据显示给用户,并接受用户的输入和编辑,将数据的改变反映给文档对象。视图充当了文档和用户之间媒介的角色。    框架        一个文档可能有
单文档/视图结构的ActiveX控件
单文档/视图结构的ActiveX控件 单文档/视图模式是MFC编程里比较强大的一种编程模式,如果ActiveX控件能够用这种模式的话,将可以做出非常强大的Web在线应用。 下面我们就介绍一种把单文档/视图模式的程序改造成ActiveX控件的方法。 做起来很难,但是完成了会很有成就感,本方法来源于15Seconds。 在VC6.0和VC.Net下都已证明可行。我用这个方法做了一个Web
[MFC]文档视图体系结构、单文档界面
1. 文档视图结构:     1) 是MFC的一种模块化设计思想的产物,要求程序的数据和表现数据的视图分开来处理;     2) 数据以文档的形式表现,文档可以存储在磁盘中永久保存也可以被程序读出并进行处理;     3) 单文档(SDI,Single Document Interface)和多文档(Multiple Document Interface)的区别:单文档界面程序只支持打开一个