MFC之添加事件的消息响应函数

本文详细介绍了如何在MFC应用中添加消息响应函数,以处理如LButtonDown等事件。首先通过项目->类向导创建事件,接着配置相关消息,然后编辑消息处理程序代码,通过CClientDC获取设备上下文进行绘图操作,最后在双击事件中展示图像。文章提供了创建和使用消息响应函数的具体步骤。
摘要由CSDN通过智能技术生成

 本文将详细介绍在MFC工程中如何添加消息响应函数。如果大家对如何在MFC中创建C++类感兴趣,可以查看博客在MFC中创建c++类

目录

step1:创建一个事件

step2:配置相关消息

 step3:编辑消息处理程序代码

step4:运行示例

     对于一些图像,我们并不希望代码一运行就直接全部显示,而是希望通过自己的鼠标进行单击或者一些其他的操作才显示,这就需要我们为MFC程序添加对应某个事件消息响应函数(也称为回调函数)。

        比如我们希望在用鼠标左键点击界面的时候才开始画图,其事件就是LButtonDown

step1:创建一个事件

 点击菜单栏里的【项目】->类向导(注意与添加类不同)

step2:配置相关消息

 step3:编辑消息处理程序代码

点击完【编辑代码(E)】后会跳转到下面这个函数,这样就创建成功了

 注意!OnLButtonDblClk的参数没有绘图用的CDC* pDC,所以需要自己获取‘画笔’

	CClientDC dc(this);
	CDC* pDC = &dc;

        使用 CClientDC 对象 dc 构造了一个句柄,其中的 this 表示当前窗口的对象指针,即表示当前视图。CClientDC 是一个封装了 Windows GDI 库定义的 HDC 句柄的 MFC 类,它的作用是提供从客户区域开始绘制的设备上下文。创建一个 CClientDC 对象时,会自动获取窗口设备上下文的句柄,并在对象的内部管理该句柄,当对象过期(析构)时,该句柄也随之释放。

        然后,将 CClientDC 对象的地址赋值给指针变量 pDC。这里使用指针的目的是为了在调用类成员函数时不必使用实例化对象(如直接使用 dc.FillSolidRect() 可以改为使用 pDC->FillSolidRect() )。也就是说,将设备上下文的地址存储到一个指针变量 pDC 中,是因为一些函数需要传递指向设备上下文的指针。

        接下来,我们就可以使用设备上下文 pDC 执行各种 GDI 操作,例如绘制图形、填充颜色、绘制文本等等。

step4:运行示例

一个简单的左键双击后在双击位置显示图像的示例

void Clhn7771View::OnLButtonDblClk(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	
	Cbmp* pBMP = new Cbmp();
	//要绘制的图像文件名
	char bmpName[] = "draw.bmp";
	//左上角坐标
	int offset_left = point.x;
	int offset_top = point.y;
	//读取并绘制图像
	CClientDC dc(this);
	CDC* pDC = &dc;
	pBMP->readAndDrawBMP_seperate(pDC, bmpName, offset_left, offset_top);

	CView::OnLButtonDblClk(nFlags, point);
}

运行后执行框是空白的

 双击后会显示图片(具体效果与自己编写的代码有关)

写在最后:

        创建一个消息响应函数需要更改的文件不要搞错了哦o(* ̄▽ ̄*)ブ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写的什么石山代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值