【MFC开发之静态文本框响应滚轮消息】

本文介绍了一种不使用OnMouseWheel函数的方法,通过PreTranslateMessage获取控件ID号并判断滚轮方向,适用于有多个静态文本框需要进行滚轮事件处理的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

滚轮消息响应函数OnMouseWheel

不适用这个函数的原因是,当有多个静态文本框需要判断时这个无法查找ID号,实际上使用PreTranslateMessage

获取ID号,判断滚轮方向

UINT btnID;

//由窗口句柄获得控件ID号,GetWindowLong为获得窗口的ID号。 
btnID = GetWindowLong(pMsg->hwnd, GWL_ID);
//获取滚轮放向
int zDelta = (short)HIWORD(pMsg->wParam);
switch (pMsg->message)
{
	case WM_MOUSEWHEEL:
	{
		if (btnID == IDC_STATIC2)
		{
			if (zDelta > 0)
			{
				//处理代码
			}
			else if (zDelta < 0)
			{
				//处理代码
			}
		}
		break;
	}
}

 

设计一个MFC程序,按钮(IDC_BUTTON_SELECT_FOLDER)打开一个图片文件夹,文件夹的路径传递到编辑框控件(IDC_EDIT_FOLDER_PATH)中,文件夹中的所有图片文件传递到listcontrol(IDC_LIST_IMAGES)中,首图片自动载入静态文本框控件(IDC_STATIC_ORIGINAL_IMAGE,该控件做图像显示用)并显示,点击listcontrol(IDC_LIST_IMAGES)中的任一文件时,静态文本框控件(IDC_STATIC_ORIGINAL_IMAGE)中的图像也随机更新显示。下拉框控件(IDC_COMBO_SAVE_OPTION)建立两个选项一个覆盖原图、一个另存为,选择按钮(IDC_BUTTON_SELECT_FOLDER)打开的图片文件夹中图像的处理结果的存储方式和存储路径(覆盖原图及原路径覆盖原图,另存为即自主建立存储路径存储处理结果),该操作只有在按钮(IDC_BUTTON_SELECT_FOLDER)已经打开一个图片文件夹,并将文件夹的路径传递到编辑框控件(IDC_EDIT_FOLDER_PATH)中生效。然后建立四个按钮:开始(IDC_BUTTON_START),作用为按设定程序依次处理按钮(IDC_BUTTON_SELECT_FOLDER)打开的图片文件夹中的所有图片;暂停/继续按钮(IDC_BUTTON_PAUSE),作用为暂停/继续开始按钮开始的图片处理进程,该按钮只要在图像处理进程没有结束,可以一直生效;停止按钮(IDC_BUTTON_STOP),作用为停止开始按钮开始的进程或暂停/继续按钮暂停或继续的开始按钮开始的图像处理进程,该按钮只能生效一次,如果想再次生效,需再次通过按钮(IDC_BUTTON_SELECT_FOLDER)打开一个图片文件夹,将文件夹的路径传递到编辑框控件(IDC_EDIT_FOLDER_PATH)中或点击重置按钮重置将处理的图片重置为原图后再次点击开始按钮开始图像处理进程才能生效;重置按钮(IDC_BUTTON_RESET)将已处理的图像重置为未处理的原图,只要开始按钮开始处理图片进程即可生效。点击开始按钮后,根据处理进程(处理进程依次逐一处理按钮(IDC_BUTTON_SELECT_FOLDER)打开的图片文件夹中的图片),静态文本框(IDC_STATIC_ORIGINAL_IMAGE)跟随处理进程依次更新当前处理 图片的原图,当处理进程进行,需要浏览listcontrol(IDC_LIST_IMAGES)中的文件时,选中需要浏览的图片后,将静态文本框控件(IDC_STATIC_ORIGINAL_IMAGE)中正在处理的进程中的图片切到需要浏览的图片,显示三秒后切回处理进程中正在处理的图片;静态文本框(IDC_STATIC_PROCESSED_IMAGE)则跟随处理进程依次更新当前处理图片的处理过程及处理结果。静态文本框控件(IDC_STATIC_ORIGINAL_IMAGE)和静态文本框(IDC_STATIC_PROCESSED_IMAGE)的显示存在三种情况,一是在处理进程无外部干预(即无人工选择listcontrol(IDC_LIST_IMAGES)中的图片浏览)时,二者显示的图片应为一样,只是静态文本框控件(IDC_STATIC_ORIGINAL_IMAGE)中是显示原图,静态文本框(IDC_STATIC_PROCESSED_IMAGE)的显示是处理进程及结果;二是在处理进程有外部干预(即人工选择图片listcontrol(IDC_LIST_IMAGES)中的图片进行浏览)时,静态文本框控件(IDC_STATIC_ORIGINAL_IMAGE)中切换到选择的图像原图显示三秒,然后切回进程中的原图显示,静态文本框(IDC_STATIC_PROCESSED_IMAGE)的显示依旧是图像处理进程及结果;三是在按钮(IDC_BUTTON_SELECT_FOLDER)打开一个图片文件夹,文件夹的路径传递到编辑框控件(IDC_EDIT_FOLDER_PATH)中,且文件夹中的所有图片文件传递到listcontrol(IDC_LIST_IMAGES)时,将第一张图片传递到静态文本框控件(IDC_STATIC_ORIGINAL_IMAGE)并显示,如果没有手动切换图片,则图片一直默认显示打开路径下的第一张,如果手动浏览listcontrol(IDC_LIST_IMAGES)中的图片,则该静态文本框控件实时更新手动切换的图片,此时没有显示时间限制,如果不手动切换另一张图片,则一直显示当前图片,静态文本框(IDC_STATIC_PROCESSED_IMAGE)则不显示任何图片。另外静态文本框控件(IDC_STATIC_ORIGINAL_IMAGE)和静态文本框(IDC_STATIC_PROCESSED_IMAGE)中显示的图像保持原图比例而不超出相应静态文本框控件的范围,且能跟随鼠标指针位置用鼠标滚轮缩放。请整合并完善上述功能,并给出完整代码
最新发布
06-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值