MFC 子窗口利用双缓冲在指定控件中绘制椭圆

想通过点击一个按钮,弹出一个对话框,在此对话框中绘制椭圆(对话框弹出时椭圆已绘制完毕,不需要点击按钮触发)。则需要在新建对话框的OnPaint()函数中绘制

1 建立模态对话框
1.1 插入一个新的对话框

在这里插入图片描述

1.2 修改对话框ID:选择对话框,Alt+Enter快捷键进入属性表

在这里插入图片描述

1.3 对话框关联到 类中

右键对话框 添加类(或者双击窗口也可)
在这里插入图片描述
加入类名
在这里插入图片描述

1.4 模态创建

xxDlg.h窗口加入模态类头文件
在这里插入图片描述
xx.DIALOG对话框双击【双缓冲绘制椭圆】按钮,进入xxDlg.cpp窗口

在这里插入图片描述
OnBnClickedButton2()函数中加入以下代码:

CDlgEllipse dlg;
dlg.DoModal();

在这里插入图片描述
运行效果:
在这里插入图片描述

1.5 子窗口加入控件

在子窗口中加入一个Group控件,修改ID
在这里插入图片描述

2 子窗口中绘制图形
2.1 添加消息映射标志

在子窗口.cpp文件中添加消息映射标志

ON_WM_PAINT()

在这里插入图片描述

2.2 添加函数声明

在子窗口.h文件中添加OnPaint()函数声明

afx_msg void OnPaint();

在这里插入图片描述

2.3 添加代码

在子窗口.cpp文件中实现OnPaint()函数,在else中添加绘制代码,这样模态对话框弹出的时候,图形就绘制好了

void CDlgEllipse::OnPaint()
{
   
	if (IsIconic())
	{
   
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值