多视图静态切分SDI窗口

今天,终于完成了一直以来都想做到的像WINDOWS中的MMC那样的界面。

小小的开心了一下,现在将心得总结如下:

1。在VC6.0中建立一个SDI工程,工程名为dbvView,在向导的第六步中的WINDOWS风格中选中“应用拆分窗体”。工程建立好了以后,我们可以看到选中了“应用拆分窗体”选项创建的工程,和一般的工程不同的地方:在CMainFrame类中多了一个CSplitterWnd类型的变量 m_wndSplitter,其实完成切分窗体的功能就是靠这个变量。

2。新建一个类CNewView,从CView类派生。

3。重载CMainFrame::OnCreateClient()函数。

      BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
      {
            m_wndSplitter.CreateStatic(this,1,2);
            m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CNewView),CSize(100,100),pContext);
            m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CdbvView),CSize(100,100),pContext);
            return TRUE;
      }

     其中,CreateStatic(this,1,2)函数是将当前主框架拆分成1行2列。框架拆分后从0行0列开始编号。

     CreateView(0,0,RUNTIME_CLASS(CNewView),CSize(100,100),pContext)函数是让视图类CNewView显示在

     框架的第0行第0列。

这样就完成了拆分窗体,并将自定义的视图绑定在拆分的窗体上了。

不过,当我运行程序的时候出现了一个问题,程序报错:CdbvView不是类名或名字空间。

于是我在MainFrame.cpp中添加了一个头文件#include "dbvview.h"

这个错误没有了。但是新的错误又出来了。

     error C2143: 语法错误 : 缺少“;”(在“*”的前面)

    error C2501: “CdbvView::CdbvDoc” : 缺少存储类或类型说明符

    error C2501: “CdbvView::GetDocument” : 缺少存储类或类型说明符

    warning C4183: “GetDocument”: 缺少返回类型;假定为返回“int”的成员函数

到网上查了好久,终于知道了原因所在,在CdbvView.h中有一个CdbvDoc* GetDocument() const;但是

CdbvView.h中没有包含CdbvDoc。所以只要在CdbvView.h中包含CdbvDoc.h就可以了。



     

你可能感兴趣的:(多视图静态切分SDI窗口)