【MFC】VisuaC++ 对话框和控件案例

本文档详细介绍了如何在MFC的Visual C++环境中,通过创建单文档应用程序,设计一个对话框来获取用户输入的坐标,并在视图上根据这些坐标绘制直线。步骤包括添加对话框资源、创建对话框类、处理菜单命令、关联控件变量、接收用户输入及在OnDraw函数中画图。在实现过程中,解决了ClassView类视图丢失的问题,并给出了具体的解决方案。
摘要由CSDN通过智能技术生成

【MFC】VisuaC++ 对话框和控件案例

用单文档实现在对话框中输入终点的坐标,在客户区显示当前位置到输入终点的直线

题目具体如下:
(1)执行“编辑|输人数据(I)…"菜单命令打开一个标题为“输人数据”的对话框,通
过该对话框输人X和Y坐标值,要求输人值在0~600。
(2)在视图类中定义两个成员变量,单击对话框的“确定”按钮时接收输人数据,并
赋值给视图对象的两个成员变量,调用Invalidate()函数刷新窗口。
(3)在OnDraw()函数中添加代码,画一条从当前位置到输人坐标的直线。

实现步骤

1、建一个单文档应用程序

在这里插入图片描述
在这里插入图片描述

2、在资源中添加对话框资源(Ctrl+R)

在这里插入图片描述

3、鼠标左键双击空白处添加对话框类(在MFC中对资源的操作一般是通过类实现的)

这里是引用
这里可以看出CDialog是和窗口相关的类(主要是在屏幕上显示对话框)

在这里插入图片描述
在这里插入图片描述
这里命名为CTestDlg
在这里插入图片描述

4、增加菜单项

在这里插入图片描述
把消息响应在VIEW中实行(增加函数,编辑代码)
在这里插入图片描述

5、模态对话框的创建

这里是引用
关于模态对话框的说明

记得在VIEW中添加头文件

#include "TestDlg.h"

编写响应函数的代码

void CMyDialog_1View::OnDialog() 
{
	// TODO: Add your command handler code here
	CTestDlg dlg;
	dlg.DoModal();
}

此时就已经完成了模态对话框的创建(当对话框出现时其他菜单项显灰)
在这里插入图片描述

6、完善对话框界面,添加静态文本框、编辑框控件

在这里插入图片描述
将编辑框数据关联整形的成员变量在这里插入图片描述
成员变量范围在(0~600)
在这里插入图片描述

7、接收终点坐标并画图

VIEW中增加成员变量
在这里插入图片描述
在之前模态对话框的创建的函数中继续完善

void CMyDialog_1View::OnDialog() 
{
	// TODO: Add your command handler code here
	CTestDlg dlg;
	if(dlg.DoModal()==IDOK){
		m_ptEnd.x=dlg.m_x;
		m_ptEnd.y=dlg.m_y;
		Invalidate();
	}
}

在OnDraw函数中绘制直线

void CMyDialog_1View::OnDraw(CDC* pDC)
{
	CMyDialog_1Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	pDC->LineTo(m_ptEnd);
	// TODO: add draw code for native data here
}

8、成果展示

在这里插入图片描述
在这里插入图片描述

在实现该案例中遇到的困难以及解决办法

1)ClassView中的类视图不见了

解决办法:先保存workspace,然后关闭工程,删除此工程目录中的.ncb文件,重新打开workspace

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值