mfc对话框的二次切分
在这里插入代码片
一:首先需要建两个类,目的是到时候定义划分的窗口种类
点击项目:项目图片再点击类向导
鼠标移动至添加类,点击添加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对话框的二次切分相关推荐
- CAD二次开发-MFC对话框domal显示错误
问题:CAD二次开发时添加MFC对话框后显示错误,显示为多重引线样式管理器. 解决:在对话框之前需要使用AfxGetResourceHandle和AfxSetResourceHandle进行模块资源切 ...
- VS2019 MFC 对话框拆分窗格
目录 应用场景介绍 1. 在 MFC 对话框工程基础上,添加两个MFC CFormView 类 2. 在 CDlgTabLowLevel 对话框(A) 类的头文件中添加下面代码 3. 在 CDlgTa ...
- MFC对话框中的工具栏、状态栏设计小结
对网上的资料结合自己的实践的总结,由于大部分都是网上先辈们的经验,这里只是直接将内容拿来,格式优化一下更易读而已. 对话框中建立工具栏的方法 工具栏中包含了一组用于执行命令的按钮,每个按钮都用一个图标 ...
- BCGControlBar MFC对话框换肤 续
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 系统环境 ...
- MFC对话框动态背景(定时器)
MFC对话框动态背景 一.创建对话框 二.添加背景图片 三.加载图片到对话框 四.添加定时器并初始化 五.运行结果 一.创建对话框 1.打开VS(这里是VS2017),文件->新建->项目 ...
- MFC编程实例二:进度条的使用
MFC编程实例二:进度条的使用 (以下蓝色字体为手动添加的代码) (1) 创建一个基于对话框的应用程序. (2) 在对话框界面添加一个文本框.一个进度条控件(Progress控件)和一个按钮. ...
- VS2017 MFC对话框程序打印及打印预览的实现
VS2017 MFC对话框程序打印及打印预览的实现 花了一个星期,研究了网上大量的MFC对话框打印及打印预览功能的demo之后,网上现有的版本都比较旧,所以选中了几个版本,合并修改,得到这个比较完美的 ...
- VS2019 MFC DLL共享动态链接库(MFC 常规库)封装例程非模态调用 MFC 常规库[二]
[ 前言] 网上用很多关于MFC 共享DLL的简介,此处不在叙述.实际应用中发现"共享MFC DLL的规则DLL"是在编写基于MFC的DLL程序时,编译后该DLL ...
- 基于halcon实现视觉定位框架(C#做主算法,C#、MFC、Qt二次开发)【附源码】
文章目录 前言 演示视频 一.项目文件目录讲解 1.CtuVisionControlLibrary 2.CtuVisionDLLTest_CSharp 2.CtuVisionDLLTest_MFC 2 ...
最新文章
- Ubuntu 上安装rust
- 微型计算机中的外存储器 现在普遍采用,2010澳门特别行政区全国计算机等级考试二级笔试试卷VB最新考试试题库(完整版)...
- COM Surrogate 遇到问题需要关闭。我们对此引起的不便表示抱歉
- [ATF]-ATF makefile的导读
- Dubbo(四)之xml配置方式
- MyBatis-Plus_查询进阶05
- rabbitmq消息保证幂等的消息设计
- 提交App中断出现 Cannot proceed with delivery an existing transporter instan
- 广州牵引力教育详细分析学习Java能从事前端开发吗?
- window安装python3后怎么用pyspark_pyspark:连接spark集群Windows环境搭建
- Python元组练习题
- Matlab实现均值滤波
- CSS3之颜色渐变效果
- 苹果鼠标怎么充电_macbook pro搭配什么鼠标好?
- ios是什么?ios有什么特点?
- Python 汽车之家 全系车型参数(包含历史停售车型)爬虫
- 利用矩阵键盘制作密码锁
- 2010年国家规划布局内重点软件企业认定名单
- 一行shell命令实现代码行数统计
- 一级建造师课件免费下载_注册建造师管理制度中的矛盾点总结!