MFC分割窗口

我们经常看到一些页面被划分成几大块.最简单的就是分成左右两在块.像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;

}

 

 

你可能感兴趣的:(MFC分割窗口)