MFC中将客户区划分为若干子窗口

MFC中将客户区划分子窗口

一、准备工具

  • VC6.0(VS做MFC老坑了)

二、手把手教学

1.预期目标
将客户区分为左右两个子窗口,左部占整个窗口的1/4,右部占3/4
**效果图**

  • 第一步:建立MFC工程(单文档)
  • 第二步:资源视图(resourceView)->对话框(Dialog)->插入Dialog
    效果图
  • 第三步 修改对话框属性,将 样式(style) 改为 child(下层),将 边框(border) 改为 none
    效果图
  • 第四步 为新建立的对话框添加一个类,基于CFormView,命名为CLeftView
    效果图
  • 第五步 向CMainFrame中添加成员变量和函数

新增成员变量

CSplitterWnd m_wndSplitter;

重载CFormView的虚函数 OnCreateClient,并向其中添加以下代码

	CRect rect;
	GetClientRect(&rect);//获取客户区矩形
	//拆分窗口
	if(!m_wndSplitter.CreateStatic(this,1,2))//将窗口在分为1*2个,竖直方向一个,水平方向两个(根据自己需要改参数)
	{
		MessageBox("Faild 1");
		return false;
	}
	if(!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CLeftForm),CSize(rect.Width()/4,
		rect.Height()),pContext))//水平方向第一个窗口
	{
		MessageBox("Faild 2");
		return false;
	}
	if(!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CTest20181103View),CSize(3*rect.Width()/4,
		rect.Height()),pContext))//水平方向第二个窗口
	{
		MessageBox("Faild 3");
		return false;
	}
	return true;

注:此时编译程序会提示有错误
需要向CMainFrame的.CPP文件中加入相应的头文件"XXXView.h"(即MFC生成的View类)和我们刚刚为对话框添加的类“LeftView.h
别着急,还没结束,现在编译,还是提示有错误,而且这个错误很奇葩,你先编译试试~~
这是MFC的一个经典错误

error C2143: syntax error : missing ';' before '*'
error C2501: 'CTest2018110401Doc' : missing storage-class or type specifiers
error C2501: 'GetDocument' : missing storage-class or type specifiers
执行 cl.exe 时出错.

CXXXView的.h文件中包含头文件“XXXDoc.h”,就OK了
运行下瞅瞅吧

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值