用VS08程序向导,单文档程序,默认设置生成的。工程名为3view;

其中默认生成的视图类CMy3viewView,对应3viewView.h,3viewView.cpp;

在Resourse View添加个新对话框,在对话框的属性中,Border设置成None;Style设置成Child;

生成的新类中Base class设置为CFormView;  本程序中定义类名为CDefFormView;

默认生成的文档类为:3viewDoc.h,3viewDoc.cpp;

在主框架头文件MainFrm.h中添加如下头文件; //为了调用程序默认的视类CMy3viewView;

#include "3viewDoc.h"
#include "3viewView.h"

并添加如下变量

CSplitterWnd m_wndSplitter;
 CSplitterWnd m_wndSPlitterTB;
 CSplitterWnd m_wndSPlitterTB2;
 BOOL m_is_spilit  //用来判断分割窗口是否成功,做为窗口自适应大小的变量

并重载OnCreateClient函数

  1. BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
  2. {
  3. // TODO: Add your specialized code here and/or call the base class
  4. CRect ct;
  5. GetClientRect(&ct);
  6. //主框架左右分成1行3列
  7. m_wndSplitter.CreateStatic(this,,);
  8.  
  9. //在m_wndSplitter的第1行第1列分割区成2行1列
  10. m_wndSPlitterTB.CreateStatic(&m_wndSplitter,,,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(,));
  11. //在m_wndSplitter的第1行第2列分割区成2行1列
  12. m_wndSPlitterTB2.CreateStatic(&m_wndSplitter,,,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(,));
  13.  
  14. //在m_wndSPlitterTB中创建第1行第1列视图
  15. m_wndSPlitterTB.CreateView(,,RUNTIME_CLASS(CDefFormView),CSize(ct.Width()/,ct.Height()/),pContext);
  16. //在m_wndSPlitterTB中创建第2行第1列视图
  17. m_wndSPlitterTB.CreateView(,,RUNTIME_CLASS(CDefFormView),CSize(ct.Width()/,ct.Height()/),pContext);
  18.  
  19. //在m_wndSPlitterTB2中创建第1行第1列视图
  20. m_wndSPlitterTB2.CreateView(,,RUNTIME_CLASS(CDefFormView),CSize(ct.Width()/,ct.Height()/),pContext);
  21. //在m_wndSPlitterTB2中创建第2行第1列视图
  22. m_wndSPlitterTB2.CreateView(,,RUNTIME_CLASS(CMy3viewView),CSize(ct.Width()/,ct.Height()/),pContext);
  23. //在m_wndSPlitterTB2中创建第3行第1列视图
  24. m_wndSPlitterTB2.CreateView(,,RUNTIME_CLASS(CDefFormView),CSize(ct.Width()/,ct.Height()/),pContext);
  25.  
  26. //在m_wndSPlitter中创建第1行第3列的视图
    m_wndSplitter.CreateView(,,RUNTIME_CLASS(CMy3viewView),CSize(ct.Width()/,),pContext);
      
      m_wndSplitter.SetColumnInfo(0,ct.Width()/3,50);
      m_wndSplitter.SetColumnInfo(1,ct.Width()/3,50);
      m_wndSplitter.SetColumnInfo(2,ct.Width()/3,50);
    //获取对应视图的对象
  27. CMy3viewView* view = (CMy3viewView *)m_wndSplitter.GetPane(,);
  28. CDefFormView* view2 = (CDefFormView*)m_wndSPlitterTB.GetPane(,);
  29.  
  30. return TRUE;
  31. //return CFrameWnd::OnCreateClient(lpcs, pContext);
  32. }

重载OnSize函数:(主框架大小变化是分割窗口自适应大小)

  1. void CMainFrame::OnSize(UINT nType, int cx, int cy)
  2. {
  3. CFrameWnd::OnSize(nType, cx, cy);
  4.  
  5. // TODO: Add your message handler code here
  6. if(m_is_spilit)
  7. {
  8. CRect ct;
  9. GetClientRect(&ct);
  10.  
  11. m_wndSplitter.SetRowInfo(,ct.Height(),);
  12. m_wndSplitter.SetColumnInfo(,ct.Width()/,);
  13. m_wndSplitter.SetColumnInfo(,ct.Width()/,);
  14. m_wndSplitter.SetColumnInfo(,ct.Width()/,);
  15.  
  16. m_wndSPlitterTB.SetRowInfo(,ct.Height()/,);
  17. m_wndSPlitterTB.SetRowInfo(,ct.Height()/,);
  18.  
  19. m_wndSPlitterTB2.SetRowInfo(,ct.Height()/,);
  20. m_wndSPlitterTB2.SetRowInfo(,ct.Height()/,);
  21. m_wndSPlitterTB2.SetRowInfo(,ct.Height()/,);
  22.  
  23. m_wndSplitter.RecalcLayout();
  24.  
  25. }
  26. }

生成的程序如图显示:

MFC单文档分割区(CSplitterWnd)的更多相关文章

  1. MFC单文档程序结构

    MFC单文档程序结构三方面: Doc MainFrame View

  2. MFC单文档

    一.创建并运行MFC单文档程序 1.创建单文档程序 这里使用的是VS2017.首先,打开VS2017,选择文件->新建->项目,然后选择Visual C++ -> MFC /ATL& ...

  3. VC++ MFC单文档应用程序SDI下调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错原因分析及解决办法:glewInit()初始化的错误

    1.问题症状 在VC++环境下,利用MFC单文档应用程序SDI下开发OpenGL程序,当调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错,出错代码如下: OpenG ...

  4. MFC单文档框架分析及执行流程(转)

    原文转自 https://blog.csdn.net/u011619422/article/details/40402705 首先来分析一下MFC单文档类的结构: 它包括如下几个类: CAboutDl ...

  5. VC-基础:MFC单文档程序架构解析

    MFC单文档程序架构解析 这里我以科院杨老师的单文档程序来分析一下MFC单文档的程序架构,纯属个人见解,不当之处烦请指教! 首先我们了解到的是 图(一) theApp 是唯一一个在程序形成的时候就存在 ...

  6. MFC单文档程序架构解析

    MFC单文档程序架构解析 MFC单文档程序架构解析 这里我以科院杨老师的单文档程序来分析一下MFC单文档的程序架构,纯属个人见解,不当之处烦请指教! 首先我们了解到的是 图(一) theApp 是唯一 ...

  7. MFC单文档视图程序简介

    在视图应用程序中,应用程序的数据由文档对象代表,数据的视图由视图对象代表.MFC的Cdocument类是文档对象的基类,Cview类是视图对象的基类.应用程序的主窗口,其操作功能在MFC的Cframe ...

  8. MFC单文档视图中嵌入GLFW窗口

    开始学习OpenGL由于有一段时间,但是glfw只有窗口区,虽然通过某种手段(移步这里)可以加入工具栏,但仍然无法作为一个标准的GUI,而直接在MFC或Qt里面使用OpenGL API感觉有诸多制肘, ...

  9. 【2016.3.30项目技术记录】]VS2010自动生成MFC单文档框架程序的修改:去除属性框,在CViewTree类中添加鼠标单击响应

    转自http://blog.csdn.net/yanfeiouc2009/archive/2010/06/07/5653360.aspx 手头上有个东西要用到单文档,由于想省事,直接用VS2010做了 ...

随机推荐

  1. 应该抛出什么异常?不应该抛出什么异常?(.NET/C#)

    我在 .NET/C# 建议的异常处理原则 中描述了如何 catch 异常以及重新 throw.然而何时应该 throw 异常,以及应该 throw 什么异常呢? 究竟是谁错了? 代码中从上到下从里到外 ...

  2. 实现一个web服务器, 支持php

    暂时还很不完善, 不过框架已经写出来了. https://github.com/tw1996/studyHttpd/

  3. android 和主线程有关的小问题

    1.在android 中 HTTP请求被不允许在主线程中执行,否则会抛出异常.如果请求时间过长,阻塞UI线程是一个非常差的体验之前,刚开始开发遇到这个问题,每次app运行到最后,发送网络请求就自己崩溃 ...

  4. SQL夯实基础(九)MySQL联接查询算法

    书接上文<SQL夯实基础(八):联接运算符算法归类>. 这里先解释下EXPLAIN 结果中,第一行出现的表就是驱动表(Important!). 对驱动表可以直接排序,对非驱动表(的字段排序 ...

  5. Oracle数据库安装完成后相关问题的解决

    笔者一直以来都是使用公司服务器上的oracle数据库,突然一天公司服务器宕机了,项目无法访问数据库跟着瘫痪了,所以准备在自己的机器上安装一个oracle数据库. 从官网下载安装了oracle 11g后 ...

  6. python调用dll

    调用CALLBACK标记的dll方法要用dll = ctypes.windll.LoadLibrary( 'test.dll' ) 没有CALLBACK的方法用dll = ctypes.cdll.Lo ...

  7. npm 可执行模块的开发&&私服发布

    备注:    大家日常在使用npm 安装依赖的时候有一些是命令行工具,比如vue-cli,具体的开发比较简单,同时 可以基于此开发一些脚手架,方便开发. 1. 项目初始化 npm init 备注:按照 ...

  8. [LeetCode系列]翻转链表问题II

    给定一个链表和两个整数m, n, 翻转链表第m个节点到第n个节点(从1开始计数). 如, 给定链表: 1->2->3->4->5->NULL, 以及 m = 2, n = ...

  9. yii2自定义500错误

    由于项目想加预警监控,有一块儿是涉及到程序内部错误的500,这样的错误级别比较高,所以就需要捕获这样的错误,顺便自定义了一把视图样式 看了这篇博客,知道了如何去自定义自己错误页面 : http://t ...

  10. struts2学习(8)struts标签1(数据标签、控制标签)

    一.struts2标签简介: struts标签很多,功能强大,这是优点: 但是缺点的话,性能方面可能会,各方面速度啊啥的会降低:有人比较测试,struts性能比jstl低很多:   二.struts2 ...