用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函数

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
CRect ct;
GetClientRect(&ct);
//主框架左右分成1行3列
m_wndSplitter.CreateStatic(this,,); //在m_wndSplitter的第1行第1列分割区成2行1列
m_wndSPlitterTB.CreateStatic(&m_wndSplitter,,,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(,));
//在m_wndSplitter的第1行第2列分割区成2行1列
m_wndSPlitterTB2.CreateStatic(&m_wndSplitter,,,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(,)); //在m_wndSPlitterTB中创建第1行第1列视图
m_wndSPlitterTB.CreateView(,,RUNTIME_CLASS(CDefFormView),CSize(ct.Width()/,ct.Height()/),pContext);
//在m_wndSPlitterTB中创建第2行第1列视图
m_wndSPlitterTB.CreateView(,,RUNTIME_CLASS(CDefFormView),CSize(ct.Width()/,ct.Height()/),pContext); //在m_wndSPlitterTB2中创建第1行第1列视图
m_wndSPlitterTB2.CreateView(,,RUNTIME_CLASS(CDefFormView),CSize(ct.Width()/,ct.Height()/),pContext);
//在m_wndSPlitterTB2中创建第2行第1列视图
m_wndSPlitterTB2.CreateView(,,RUNTIME_CLASS(CMy3viewView),CSize(ct.Width()/,ct.Height()/),pContext);
//在m_wndSPlitterTB2中创建第3行第1列视图
m_wndSPlitterTB2.CreateView(,,RUNTIME_CLASS(CDefFormView),CSize(ct.Width()/,ct.Height()/),pContext); //在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);
//获取对应视图的对象
CMy3viewView* view = (CMy3viewView *)m_wndSplitter.GetPane(,);
CDefFormView* view2 = (CDefFormView*)m_wndSPlitterTB.GetPane(,); return TRUE;
//return CFrameWnd::OnCreateClient(lpcs, pContext);
}

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

void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy); // TODO: Add your message handler code here
if(m_is_spilit)
{
CRect ct;
GetClientRect(&ct); m_wndSplitter.SetRowInfo(,ct.Height(),);
m_wndSplitter.SetColumnInfo(,ct.Width()/,);
m_wndSplitter.SetColumnInfo(,ct.Width()/,);
m_wndSplitter.SetColumnInfo(,ct.Width()/,); m_wndSPlitterTB.SetRowInfo(,ct.Height()/,);
m_wndSPlitterTB.SetRowInfo(,ct.Height()/,); m_wndSPlitterTB2.SetRowInfo(,ct.Height()/,);
m_wndSPlitterTB2.SetRowInfo(,ct.Height()/,);
m_wndSPlitterTB2.SetRowInfo(,ct.Height()/,); m_wndSplitter.RecalcLayout(); }
}

生成的程序如图显示:

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. SPOJ Favorite Dice(数学期望)

    BuggyD loves to carry his favorite die around. Perhaps you wonder why it's his favorite? Well, his d ...

  2. 实现同时提交多个form(基础方法) 收集(转)

    方法一: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4 ...

  3. 在父容器div中图片下方有一条空隙问题

    问题:<div><img src="mm1.jpg"></div> 然后,表现就是一张图片呈现,类似下面这样: 恩,看上去很正常,一切都是理所当 ...

  4. hadoop入门手册5:Hadoop【2.7.1】初级入门之命令:文件系统shell2

    问题导读 1.改变hdfs文件的权限,需要修改哪个配置文件?2.获取一个文件的或则目录的权限,哪个命令可以实现?3.哪个命令可以实现设置访问控制列表(ACL)的文件和目录? 接上篇:Hadoop[2. ...

  5. LaTex初学

    先用三句话来介绍什么是LaTeX:1.LaTeX是一类用于编辑和排版的软件,用于生成PDF文档.2.LaTeX编辑和排版的核心思想在于,通过\section和\paragraph等语句,规定了每一句话 ...

  6. iptables规则绑定在port而不是拦截在协议栈

    版权声明:本文为博主原创,无版权.未经博主同意能够任意转载,无需注明出处,任意改动或保持可作为原创! https://blog.csdn.net/dog250/article/details/2417 ...

  7. cookie控制登陆时间

    使用cookie实现永久登陆 1,在cookie里面保存账号密码然后和数据库核对(由于我没有使用数据库,就不用了 2,在cookie里面保存时间戳和账号使用加密解密(我也没有使用时间戳 思路,requ ...

  8. Jetty小计,比之tomcat调试还是不方便

    不需要额外的工程支持,不需要硬盘中有tomcat之类的额外文件 Jetty的Debug:右键Debug as... Maven Builder Jetty相关的配置文件如下: <profiles ...

  9. Ubuntu下手动安装Nvidia显卡驱动

    1. 下载最新版的nVidia驱动. http://www.nvidia.com/page/drivers.html 2.编辑blacklist.conf. sudo gedit /etc/modpr ...

  10. mac下finder子目录直接打开终端

    macstore下载go2shell,放你喜欢的目录,按住command,拖动到finder顶部的工具栏即可 终端直接打开finder,终端输入 open . 注意,后面红色的点,表明当前目录