m_pIUserView = RUNTIME_CLASS(IUserView);/////////////////////////////////////////////pNewActiveView = m_pIUserView;
m_wndSplitter.CreateView(0, 1,pNewActiveView, size, &ctx);//程序运行到这里就会访问冲突..
                                                          //如果第三个参数换成RUNTIME_CLASS(IUserView)就ok..
                                                           //为什么,

解决方案 »

  1.   

    RUNTIME_CLASS 这个实际是对DECLARE_DYNAMIC 生成的static const CRuntimeClass class##class_name; \ 这个对象的调用,你看看是不是作用域不对啊。或者返回值是否为空值。还有就是参数类型对不对CSplitterWnd::CreateViewvirtual BOOL CreateView( int row, int col, CRuntimeClass* pViewClass, SIZE sizeInit, CCreateContext* pContext );返回值:如果成功则返回非零值;否则返回0。参数: row 指定用来放置新视的分隔器窗口行。  
    col 指定用来放置新视的分隔器窗口列。  
    pViewClass 指定新视的CRuntimeClass。  
    sizeInit 指定新视的初始尺寸。  
    pContext 指向用来创建此视的创建环境的指针(通常,该pContext被传递给在其中创建此分隔器窗口的父框架的重载的OnCreateClient成员函数)。  说明:
    此成员函数用来为一个静态分隔器窗口创建窗格。一个静态分隔器窗口的所有窗格必须在框架显示这个分隔器之前被创建。
    当一个动态分隔器的用户分隔一个窗格,行或列时,框架也调用这个成员函数来创建新的窗格。请参阅:CSplitterWnd::Create