用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. HDU2157 How many ways矩阵再识

    春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线去教室 ...

  2. BZOJ2131 免费的馅饼【线段树优化DP】

    Input 第一行是用空格隔开的二个正整数,分别给出了舞台的宽度W(1到10^8之间)和馅饼的个数n(1到10^5). 接下来n行,每一行给出了一块馅饼的信息.由三个正整数组成,分别表示了每个馅饼落到 ...

  3. C# 中那些可以被重载的运算符,以及使用它们的那些丧心病狂的语法糖

    C# 中的操作符重载并不新鲜.然而,到底有哪些操作符可以重载,重载操作符可以用来做哪些丧心病狂的事情呢? 本文收集了 C# 中所有可以重载的操作符,并且利用他们做了一些丧心病狂的语法糖.   可以重载 ...

  4. 《DSP using MATLAB》示例Example6.29

    代码: % The following funciton computes the filter % coefficients shown in Table 6.2 b = firpm(30, [0, ...

  5. 船长带你看书——《selenium2 python 自动化测试实战》(2)浏览器操作

    浏览器操作 # coding: utf-8 from selenium import webdriver from time import sleep driver = webdriver.Firef ...

  6. anycast简单总结

    一针见血,言简意赅的总结 bgp+anycast就是不同服务器用了相同的ip地址 anycast 技术特点 bgp+anycast就是多个主机使用相同ip地址的一种技术,当报文发给该地址时,根据路由协 ...

  7. 一个简单的selenium实例(一)

    1.selenium RC+Eclipse下载安装 java环境 官网下载地址http://www.oracle.com/technetwork/java/javase/downloads/index ...

  8. geohash 精度

    关于地图的距离.  $list1=Db::name('museum')->where('id','in',$user['gz'])->order('ACOS(SIN(('.$lat.' * ...

  9. oracle之 sqlplus prelim 参数介绍 ( 处理hang )

    从Oracle10g开始,sqlplus提供了一个参数选项-prelim,用这个参数,在系统已经hang的时候.我们可以连接到SGA而不是数据库,也就是说没有session被创建. 一. 通过以下步骤 ...

  10. Fiddler+Firefox

    配置置代理了,发现还是不好用!无法抓包: 配置就是在firefox的“选项”,拉到最下面,就能够看到“网络代理”,点进去:手动代理里面输入Fiddler的代理信息(默认127.0.0.1:8888) ...