MFC单文档分割区(CSplitterWnd)
用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)的更多相关文章
- MFC单文档程序结构
MFC单文档程序结构三方面: Doc MainFrame View
- MFC单文档
一.创建并运行MFC单文档程序 1.创建单文档程序 这里使用的是VS2017.首先,打开VS2017,选择文件->新建->项目,然后选择Visual C++ -> MFC /ATL& ...
- VC++ MFC单文档应用程序SDI下调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错原因分析及解决办法:glewInit()初始化的错误
1.问题症状 在VC++环境下,利用MFC单文档应用程序SDI下开发OpenGL程序,当调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错,出错代码如下: OpenG ...
- MFC单文档框架分析及执行流程(转)
原文转自 https://blog.csdn.net/u011619422/article/details/40402705 首先来分析一下MFC单文档类的结构: 它包括如下几个类: CAboutDl ...
- VC-基础:MFC单文档程序架构解析
MFC单文档程序架构解析 这里我以科院杨老师的单文档程序来分析一下MFC单文档的程序架构,纯属个人见解,不当之处烦请指教! 首先我们了解到的是 图(一) theApp 是唯一一个在程序形成的时候就存在 ...
- MFC单文档程序架构解析
MFC单文档程序架构解析 MFC单文档程序架构解析 这里我以科院杨老师的单文档程序来分析一下MFC单文档的程序架构,纯属个人见解,不当之处烦请指教! 首先我们了解到的是 图(一) theApp 是唯一 ...
- MFC单文档视图程序简介
在视图应用程序中,应用程序的数据由文档对象代表,数据的视图由视图对象代表.MFC的Cdocument类是文档对象的基类,Cview类是视图对象的基类.应用程序的主窗口,其操作功能在MFC的Cframe ...
- MFC单文档视图中嵌入GLFW窗口
开始学习OpenGL由于有一段时间,但是glfw只有窗口区,虽然通过某种手段(移步这里)可以加入工具栏,但仍然无法作为一个标准的GUI,而直接在MFC或Qt里面使用OpenGL API感觉有诸多制肘, ...
- 【2016.3.30项目技术记录】]VS2010自动生成MFC单文档框架程序的修改:去除属性框,在CViewTree类中添加鼠标单击响应
转自http://blog.csdn.net/yanfeiouc2009/archive/2010/06/07/5653360.aspx 手头上有个东西要用到单文档,由于想省事,直接用VS2010做了 ...
随机推荐
- Java并发--线程池的使用
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统 ...
- BZOJ2090: [Poi2010]Monotonicity 2【线段树优化DP】
BZOJ2090: [Poi2010]Monotonicity 2[线段树优化DP] Description 给出N个正整数a[1..N],再给出K个关系符号(>.<或=)s[1..k]. ...
- jenkins for mac
Mac环境中Jenkins的停止和启动命令启动sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist停止sudo launchc ...
- 利用Topshelf把.NET Core Generic Host管理的应用程序部署为Windows服务
背景 2019第一篇文章. 此文源于前公司在迁移项目到.NET Core的过程中,希望使用Generic Host来管理定时任务程序时,没法部署到Windows服务的问题,而且官方也没给出解决方案,只 ...
- ubuntu换系统下载路径源
ubuntn默认下载路径的源是国外的下载很慢换成国内的下载路径会好很多 在ubuntu应用搜索框(左上脚那个)中输入software 1.software&Updates 应用点击softwa ...
- {vlFeat}{matlab}{VS2010}{编译配置}
运行程序需要vlfeat与mex等在matlab与vs2010中配置,碰到了不少困难,下面给出解决方案 1.下载vlfeat,但是vlfeat目录中并没有编译好的mex文件,需要在vs2010中编译 ...
- openresty luarocks 安装以及openssl 问题处理
1. 安装方式 wget https://luarocks.github.io/luarocks/releases/luarocks-2.4.3.tar.gz tar -xzvf luarocks ...
- bean作用域
https://blog.csdn.net/u011468990/article/details/49995865 其中比较常用的是singleton和prototype两种作用域.对于singlet ...
- Redis客户端基本命令
更多命令请进入官网查询:https://redis.io/commands 一.基础命令 1.连接服务端 redis-cli 或 redis-cli -h ip地址 -p 端口 2.选择数据库 Red ...
- struts2学习(13)struts2文件上传和下载(1)
一.Struts2文件上传: 二.配置文件的大小以及允许上传的文件类型: 三.大文件上传: 如果不配置上传文件的大小,struts2默认允许上传文件最大为2M: 2097152Byte: 例子实现 ...