资源描述:
《基于mfc的窗口拆分》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1、MFC主要支持两种类型的窗口拆分:静态拆分和动态拆分。动态拆分:动态拆分窗口最多可以有两行两列,但它们可以相互拆分和合并。首先创建一个基于MFC的单文档工程,然后添加下面的代码,运行,就可以看到窗口动态拆分的效果。CSplitterWndm_wndSplitter;BOOLCMainFrame::OnCreateClient(LPCREATESTRUCT/*lpcs*/,CCreateContext*pContext){returnm_wndSplitter.Create(this,2,2,//TODO:调整行数和列数CSize(10,10),//TODO:
2、调整最小窗格大小pContext);}另外,动态拆分也可以在创建工程的时候,在工程向导里面勾选拆分窗口的选项,上面的代码就会自动生成,然后点击菜单视图--拆分,就可以手动拆分。2、静态拆分:静态拆分窗口的行列数在拆分窗口被创建时就设置好了,用户不能更改。但是用户可以缩放各行各列。一个静态拆分窗口最多可以包含16行16列。静态拆分的过程:静态拆分窗口是用CsplitterWnd::CreateStatic而不是CsplitterWnd::Create创建,并且由于MFC不会自动创建静态拆分窗口中显示的视图,所以您要亲自在CreateStatic返回之后创建视图。C
3、splitterWnd为此提供了名为CreateView的函数。1).在父框架中嵌入一个CSplitterWnd成员变量。2).重载父框架的CFrameWnd::OnCreateClient成员函数。3).从重载的OnCreateClient函数中调用类CSplitterWnd的Create或CreateStatic成员函数,并调用CreateView来创建视图。3、关键函数介绍:BOOLCreateStatic(CWnd*pParentWnd,intnRows,intnCols,DWORDdwStyle= WS_CHILD
4、WS_VISIBLE,UINTnI
5、D=AFX_IDW_PANE_FIRST); 函数有5个参数,意义如下: ●pParentWnd:切分窗口的父窗口指针 ●nRows:水平方向分隔窗口的数目 ●nCols:垂直方向分隔窗口的数目 ●dwStyle:切分窗口的风格 ●nID:子窗口的ID值,默认为系统定义的AFX_IDW_PANE_FIRST 返回值:如果创建成功,返回非零值(TRUE),否则返回0(FALSE)。 m_wndSplitter.CreateStatic(this,2,1);//切分为2行1列 virtualBOOLCreateView(introw,intco
6、l,CRuntimeClass*pViewClass,SIZEsizeInit,CCreateContext*pContext); 函数有5个参数,意义如下: ●row:窗格的行标,从0开始 ●col:窗格的列标,从0开始 ●pViewClass:视图的执行期类CRuntimeClass指针,可以用宏RUNTIME_CLASS获得 ●sizeInit:一个SIZE(或者CSize)类型的数据,指定窗格的初始大小 ●pContext:一般是由父窗口传递过来,包含窗口的创建信息返回值:如果创建成功,返回非零值(TRUE),否则返回0(FALSE)。m_w
7、ndSplitter.CreateView(0,0,RUNTIME_CLASS(CTest),CSize(190,100),pContext)静态窗口分割实例:新建一个基于MFC的单文档工程,并添加3个基于FormView的MFC视图类CFormView11、CFormView12和CFormView13,并添加CSplitterWndm_wndSplitter;然后添加下面的代码:BOOLCMainFrame::OnCreateClient(LPCREATESTRUCT/*lpcs*/,CCreateContext*pContext){CRectrt;GetC
8、lientRect(&rt);//创建切分窗口m_wndSplitter.CreateStatic(this,1,3);//为切分窗口创建视图m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CFormView11),CSize(100,rt.Height()),pContext);m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CFormView12),CSize(500,rt.Height()),pContext);m_wndSplitter.CreateView(0,2,RUNTIM
9、E_CLASS(CFor