我们经常看到一些页面被划分成几大块.最简单的就是分成左右两在块.像windows系统打开我的电脑时,一般是看到左边是个树形的目录结构,右边就是文件目录或有哪几个盘啊.
这样的页面是怎样实现的呢?
主要是通过类CSplitterWnd来实现的.下面来简单讲下它的用法
先创建一个SDI项目.
再添加类CMyFrm(该类继承自CFormView,实际上只要是继承自CView的类都行的.)
////////////MainFrm.h////////////////////
CSplitterWnd m_wndSplitter;
//这是一个CWnd中的虚函数,窗口的分割就在该函数中完成.哎它怎么被调用的就先不去管了,反正MFC里经常莫名其妙的跑出来一个回调函数,你看不到是在哪里被调用的,
//系统背后偷偷的就调用它了
BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
///////////////////MainFrm.cpp///////////////////
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext){
m_wndSplitter.CreateStatic(this,1,2); //这里表示把窗口分成1行两列,也就是把一个窗口分成两半了.如果要分成竖着的三部分就是CreateStatic(this,1,3);横着的三部分就是
//CreateStatic(this,3,1);
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CMyFrm),CSize(100,100),pContext); //把窗口的左边部分用某个继承自View的类绑定起来.
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CMyFrm),CSize(100,100),pContext); //把窗口的右边部分用某个继承自View的类绑定起来.
return TRUE;
}