



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MFC主要支持两种类型的窗口拆分:静态拆分和动态拆分。动态拆分:动态拆分窗口最多可以有两行两列,但它们可以相互拆分和合并。首先创建一个基于MFC的单文档工程,然后添加下面的代码,运行,就可以看到窗口动态拆分的效果。CSplitterWnd m_wndSplitter;BOOL CMainFrame:OnCreateClient(LPCREATESTRUCT /*lpcs*/,CCreateContext* pContext)return m_wndSplitter.Create(this,2,2, / TODO: 调整行数和列数CSize(10, 10), / TODO: 调整最小窗格大小pContext); 另外,动态拆分也可以在创建工程的时候,在工程向导里面勾选拆分窗口的选项,上面的代码就会自动生成,然后点击菜单视图-拆分,就可以手动拆分。2、静态拆分:静态拆分窗口的行列数在拆分窗口被创建时就设置好了,用户不能更改。但是用户可以缩放各行各列。一个静态拆分窗口最多可以包含16行16列。静态拆分的过程:静态拆分窗口是用CsplitterWnd:CreateStatic而不是CsplitterWnd:Create创建,并且由于MFC不会自动创建静态拆分窗口中显示的视图,所以您要亲自在CreateStatic返回之后创建视图。CsplitterWnd为此提供了名为 CreateView的函数。1). 在父框架中嵌入一个CSplitterWnd成员变量。2). 重载父框架的CFrameWnd:OnCreateClient成员函数。3). 从重载的OnCreateClient函数中调用类CSplitterWnd的Create或CreateStatic成员函数,并调用CreateView来创建视图。3、关键函数介绍:BOOL CreateStatic( CWnd* pParentWnd, int nRows, int nCols, DWORD dwStyle =WS_CHILD | WS_VISIBLE, UINT nID = 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列virtual BOOL CreateView( int row, int col, CRuntimeClass* pViewClass, SIZE sizeInit, CCreateContext* pContext );函数有5个参数,意义如下: row:窗格的行标,从0开始 col:窗格的列标,从0开始 pViewClass:视图的执行期类CRuntimeClass指针,可以用宏RUNTIME_CLASS获得 sizeInit:一个SIZE(或者CSize)类型的数据,指定窗格的初始大小 pContext:一般是由父窗口传递过来,包含窗口的创建信息返回值:如果创建成功,返回非零值(TRUE),否则返回0(FALSE)。 m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CTest),CSize(190,100),pContext)静态窗口分割实例:新建一个基于MFC的单文档工程,并添加3个基于FormView的MFC视图类CFormView11、CFormView12和CFormView13,并添加CSplitterWnd m_wndSplitter;然后添加下面的代码:BOOL CMainFrame:OnCreateClient(LPCREATESTRUCT /*lpcs*/,CCreateContext* pContext)CRect rt;GetClientRect(&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,RUNTIME_CLASS(CFormView13),CSize(0,rt.Height(),pContext); m_wndSplitter.SetColumnInfo(0,200,150);m_wndSplitter.SetColumnInfo(1,500,400);/重新显示该分隔器窗口 m_wndSplitter.RecalcLayout();return true;运行,就可以看到窗口分割的效果。窗口上的那些控件,可以打开资源视图-Dialog-进行添加,跟基于Dialog添加控件一样。如果你想将上面的某一列的窗口进行二次拆分,添加一个基于FormView的视图窗口类CFormView14,然后添加CSplitterWnd m_wndSplitter1;再添加下面的代码m_wndSplitter.DeleteView(0,2);/记住这一句必须要,负责自己试试,呵呵。if(!m_wndSplitter1.CreateStatic(&m_wndSplitter, 2, 1, WS_CHILD|WS_VISIBLE, m_wndSplitter.IdFromRowCol(0,2) return FALSE;if(!m_wndSplitter1.CreateView(0, 0, RUNTIME_CLASS(CFormView14), CSize(rt.Width()/2,rt.Height()/2), pContext) re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康咨询摆摊方案模板
- 咖啡馆营销策划方案
- 钢结构发泡保温施工方案
- 住宅建筑方案设计总说明
- 活动方案策划科技馆
- 户外拓展方案咨询
- 500人相亲活动方案策划
- 城市管理行业工艺流程与标准制定
- 2025国家电网安规变电部分考试题库与答案
- 房建工程外墙涂料开裂施工方案
- 筑梦项目启动仪式PPT模板
- 2023年河北省专业技术人员公需科目继续教育专业技术人员创新与经营试题及答案分解
- 发展对象培训班考试题库答案
- 珂立苏的使用方法2011-3-23课件
- 赣价协〔2023〕9号江西省建设工程造价咨询服务收费基准价
- 婴幼儿教养环境创设
- 颅脑外伤(共61张PPT)
- 防爆设备规格书
- 污水井 化粪池清掏合同
- 华能分布式光伏项目EPC总承包工程投标文件-技术部分
- 合唱团训练教案
评论
0/150
提交评论