我建立了一个单文档CuteFTP,生成的视类为 CCuteFTPView, 而后我增加了一个Cview派生的类,重载CMainFrame::OnCreateClient()函数后,我用CSplitterWnd 实现了视图的2分割,一点问题都没有。但是,我把CView派生的类改成一个对话框的派生类,并且是取FormView,结果无法运行,出错,请问要用对话框作为视图中的一部分,和用CView派生的类作为视图一部分,有什么区别,请高手救命啊!

解决方案 »

  1.   

    分割视图中的参数,即下面这句话中if (!wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CRightFrame), CSize(0, 0), pContext))
    在RUNTIME_CLASS后面的参数是不是不能是FormView派生的类啊,请高手指点,多谢了!
      

  2.   

    对话框的stytle设成child,默认是popup!
      

  3.   

    但是,我把CView派生的类改成一个对话框的派生类,并且是取FormView,结果无法运行,出错,
    ------------
    将CView派生类改为CFormView派生类。用对话框作为视图中的一部分,和用CView派生的类作为视图一部分,有什么区别
    ------------
    对话框不能作为视图来用,二者根类都是CWnd,实际上是两种不同的东西。CMainFrame::OnCreateClient()操作的是CView及其派生类,而不是对话框。如果想在View窗口中显示类似对话框中的控件,就必须使用CFormView派生类。另外,非模式对话框也可以放在CFormView派生类上。在创建一个CFormView派生类后,将原来对话框上的内容移至CFormView派生类即可。使用向导可以生成一个正确的分割视图项目,在生成过程中选择左右两个CView的基类。