SDI工程,想左右分屏,
m_wndSplitter.CreateStatic(this,1,2);m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CLeftView),CSize(100,100),pContext);m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CRightView),CSize(100,100),pContext);问题是CLeftView和CRightView的基类是CFormView,并分别对应了一个Dialog,除此之外并没有做编程。现在在一执行就非法,断在CFormView的Create语句

解决方案 »

  1.   

    可能性:
    1、你是不是DOC/VIEW结构?
    2、你的View类里面有些什么,看看Create里的东西
      

  2.   

    dialog构造函数以及初始化函数有没有执行一些特殊的代码?
      

  3.   

    我是新建的工程,并没有做什么编码
    my step1.Create SDI Project
    2.new two dialog
    3.new two formview    formview ------ dialog
    4.在mainframe中包含新增类的头文件
    5.OnCreateClient中写分屏代码,3行
    6.执行
    7。非法
    请指教,另外,如果新增的类不是formview而是view,那么没有报错并确实分屏,但我在view的OnCreate中手动Create出的控件确不能显示在视图中,设段点一看,Create控件明明成功了,但就是看不到。救命阿
      

  4.   

    控件Create是成功的话,
    重载OnSize()
    m_wndYourControl.MoveWindow(...)
    可能的话,在Create后加上m_wndYourControl.ShowWindow(SW_SHOW);
      

  5.   

    还有,你直接用CFormView的派生不行吗?为什么要加个CDialog?
      

  6.   

    to:太阳风
    你的意思我明白了,现在可否解答我第一个问题,用FormView代替View就非法阿
      

  7.   

    我把FormView和Dialog对应起来,是想简单一点,不必每个控件都自己Create
    直接在Dialog上画就行了。不好意思,我是VC的新手。
      

  8.   

    insert dialog with IDD_FORMVIEW kind;
    别用一般的dialog,以前我也碰到过的
      

  9.   

    CFormView 的Dialog的属性是特殊的
    有好几个地方要改
    你生成一个带CFormView空的项目,直接copy那里的Dialog属性吧
      

  10.   

    可能是你的Dialog styles有问题,Dialog 的style应该为:Child,
    而不能为:popup 和overlapped.
    应该知道怎么改吧!
      

  11.   

    你的dialog style 有没有问题?
    应该是: child
    而不是:popup or overlapped