今天,终于完成了一直以来都想做到的像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就可以了。