在这里插入代码片一:首先需要建两个类,目的是到时候定义划分的窗口种类
点击项目:项目图片再点击类向导
鼠标移动至添加类,点击添加mfc类, 类名命名为FrameList ,基类选 CListView, 类名命名为FrameEdit 基类选 CEditView。
随后点击类向导,添加消息函数WM_Create.再在消息函数中添加如下代码

CCreateContext ctxList, ctxEdit;
ctxList.m_pNewViewClass = RUNTIME_CLASS(FrameEdit);
ctxList.m_pCurrentDoc = NULL;
ctxList.m_pNewDocTemplate = NULL;
ctxList.m_pLastView = NULL;
ctxList.m_pCurrentFrame = NULL;ctxEdit.m_pNewViewClass = RUNTIME_CLASS(FrameEdit);
ctxEdit.m_pCurrentDoc = NULL;
ctxEdit.m_pNewDocTemplate = NULL;
ctxEdit.m_pLastView = NULL;
ctxEdit.m_pCurrentFrame = NULL;// Because the CFrameWnd needs a window class, we will create
// a new one. I just copied the sample from MSDN Help.
// When using it in your project, you may keep CS_VREDRAW and
// CS_HREDRAW and then throw the other three parameters.
CString strMyClass = AfxRegisterWndClass(CS_VREDRAW | CS_HREDRAW, ::LoadCursor(NULL, IDC_ARROW), (HBRUSH)::GetStockObject(WHITE_BRUSH), ::LoadIcon(NULL, IDI_APPLICATION));// Create the frame window with "this" as the parent
m_pFrameWnd = new CFrameWnd();
m_pFrameWnd->Create(strMyClass, _T(""), WS_CHILD, CRect(0, 0, 50, 50), this);
m_pFrameWnd->ShowWindow(SW_SHOW);
m_pFrameWnd->MoveWindow(0, 0, 500, 400);// and finally, create the splitter with the frame as
// the parentm_wndSplitter.CreateStatic(m_pFrameWnd, 1, 2);//建立第一层构架
//m_wndSplitter.CreateStatic(this, 1, 2);//建立第一层构架
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(FrameList), CSize(200,200), &ctxList);
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(FrameEdit), CSize(200, 200), &ctxEdit);
m_wndSplitter2.CreateStatic(&m_wndSplitter, 3, 1, WS_CHILD | WS_VISIBLE | WS_BORDER,m_wndSplitter.IdFromRowCol(0,0));//建立第二层构架
m_wndSplitter.DeleteView(0,0);//动态拆分
m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(FrameList), CSize(100, 100), &ctxList);
m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(FrameList), CSize(100,100), &ctxList);
m_wndSplitter2.CreateView(2, 0, RUNTIME_CLASS(FrameList), CSize(100, 100), &ctxList);
m_wndSplitter3.CreateStatic(&m_wndSplitter2, 1, 2, WS_CHILD | WS_VISIBLE | WS_BORDER,m_wndSplitter2.IdFromRowCol(0, 0));
m_wndSplitter3.CreateView(0, 0, RUNTIME_CLASS(FrameList), CSize(100, 100), &ctxList);
return 0;

至此,主题部分写完。随后,我们需要在消息处理函数OnInitDialog中添加如下代码

   // TODO: 在此添加额外的初始化代码
CRect rect;
// Get the rectangle of the custom window. The custom window
// is just a a big button that is not visible and is disabled.
// It's a trick to not use coordinates directly.
//GetDlgItem(IDD_THREECUT_DIALOG)->GetWindowRect(&rect);// Move the splitter
ScreenToClient(&rect);
m_pFrameWnd->MoveWindow(&rect);
m_pFrameWnd->ShowWindow(SW_SHOW);
//m_wndSplitter.MoveWindow(0, 0, rect.Width(), rect.Height());
//m_wndSplitter.ShowWindow(SW_SHOW);
return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE

写成这样还是会报错,因为很多变量没有定义,我们需要在 XXXDlg.h头文件中定义如下变量

  public:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
CFrameWnd *m_pFrameWnd;
CSplitterWnd m_wndSplitter;
CSplitterWnd m_wndSplitter2;

到此,所有代码全部写完。运行时会有个中断,我也没有弄清原因,点忽略就会看到想要的结果。

mfc对话框的二次切分相关推荐

  1. CAD二次开发-MFC对话框domal显示错误

    问题:CAD二次开发时添加MFC对话框后显示错误,显示为多重引线样式管理器. 解决:在对话框之前需要使用AfxGetResourceHandle和AfxSetResourceHandle进行模块资源切 ...

  2. VS2019 MFC 对话框拆分窗格

    目录 应用场景介绍 1. 在 MFC 对话框工程基础上,添加两个MFC CFormView 类 2. 在 CDlgTabLowLevel 对话框(A) 类的头文件中添加下面代码 3. 在 CDlgTa ...

  3. MFC对话框中的工具栏、状态栏设计小结

    对网上的资料结合自己的实践的总结,由于大部分都是网上先辈们的经验,这里只是直接将内容拿来,格式优化一下更易读而已. 对话框中建立工具栏的方法 工具栏中包含了一组用于执行命令的按钮,每个按钮都用一个图标 ...

  4. BCGControlBar MFC对话框换肤 续

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 系统环境 ...

  5. MFC对话框动态背景(定时器)

    MFC对话框动态背景 一.创建对话框 二.添加背景图片 三.加载图片到对话框 四.添加定时器并初始化 五.运行结果 一.创建对话框 1.打开VS(这里是VS2017),文件->新建->项目 ...

  6. MFC编程实例二:进度条的使用

    MFC编程实例二:进度条的使用 (以下蓝色字体为手动添加的代码) (1)   创建一个基于对话框的应用程序. (2)   在对话框界面添加一个文本框.一个进度条控件(Progress控件)和一个按钮. ...

  7. VS2017 MFC对话框程序打印及打印预览的实现

    VS2017 MFC对话框程序打印及打印预览的实现 花了一个星期,研究了网上大量的MFC对话框打印及打印预览功能的demo之后,网上现有的版本都比较旧,所以选中了几个版本,合并修改,得到这个比较完美的 ...

  8. VS2019 MFC DLL共享动态链接库(MFC 常规库)封装例程非模态调用 MFC 常规库[二]

    [ 前言]          网上用很多关于MFC 共享DLL的简介,此处不在叙述.实际应用中发现"共享MFC DLL的规则DLL"是在编写基于MFC的DLL程序时,编译后该DLL ...

  9. 基于halcon实现视觉定位框架(C#做主算法,C#、MFC、Qt二次开发)【附源码】

    文章目录 前言 演示视频 一.项目文件目录讲解 1.CtuVisionControlLibrary 2.CtuVisionDLLTest_CSharp 2.CtuVisionDLLTest_MFC 2 ...

最新文章

  1. Ubuntu 上安装rust
  2. 微型计算机中的外存储器 现在普遍采用,2010澳门特别行政区全国计算机等级考试二级笔试试卷VB最新考试试题库(完整版)...
  3. COM Surrogate 遇到问题需要关闭。我们对此引起的不便表示抱歉
  4. [ATF]-ATF makefile的导读
  5. Dubbo(四)之xml配置方式
  6. MyBatis-Plus_查询进阶05
  7. rabbitmq消息保证幂等的消息设计
  8. 提交App中断出现 Cannot proceed with delivery an existing transporter instan
  9. 广州牵引力教育详细分析学习Java能从事前端开发吗?
  10. window安装python3后怎么用pyspark_pyspark:连接spark集群Windows环境搭建
  11. Python元组练习题
  12. Matlab实现均值滤波
  13. CSS3之颜色渐变效果
  14. 苹果鼠标怎么充电_macbook pro搭配什么鼠标好?
  15. ios是什么?ios有什么特点?
  16. Python 汽车之家 全系车型参数(包含历史停售车型)爬虫
  17. 利用矩阵键盘制作密码锁
  18. 2010年国家规划布局内重点软件企业认定名单
  19. 一行shell命令实现代码行数统计
  20. 一级建造师课件免费下载_注册建造师管理制度中的矛盾点总结!

热门文章

  1. 20种处理照片的PS技术
  2. apktool+dex2jar+jd_gui
  3. 用Spark和DBSCAN对地理定位数据进行聚类
  4. php中四种webservice实现的简单架构方法及实例
  5. 您应该知道的6个物联网术语—Vecloud微云
  6. draw.io二次开发(2)文件解读
  7. .net平台的rabbitmq使用封装
  8. 关于开发简易搜索引擎的一些总结和思考
  9. 如何测试java支持的最大内存
  10. C++ protobuf 不仅仅是序列化……