MFC消息处理时,双击鼠标左键响应单击左键消息的处理

在MFC应用程序中,遇到一个问题是鼠标双击时,会先触发单击事件。解决方法是通过检查消息队列,在200毫秒内如果没有接收到双击消息,则执行单击事件的响应。这种方式确保了正确处理鼠标单击事件,避免了双击导致的误操作。

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

          今天做老师留下来的作业题,莫名其妙出现Bug,然后发现是MFC消息处理机制的问题,在响应鼠标双击前,会先产生一个单击鼠标消息,这里是我的解决方法。

单击响应:

void CMouseView::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO:  在此添加消息处理程序代码和/或调用默认值
	MSG message;
	//CString str1;
	//CString str2;
	//str1.Format(_T("%ld"), point.x);
	//str2.Format(_T("%ld"), point.y);
	DWORD st = GetTickCount();
	while (1)
	{
		if (PeekMessage(&message, NULL, 0, 0, PM_REMOVE))
		{
			TranslateMessage(&message);
			DispatchMessage(&message);
			if (message.message == WM_LBUTTONDBLCLK)
			{
			/*	if (num != 5)
				{
					num++;
					MessageBox(_T("(") + str1 + _T(",") + str2 + _T(")"));
					break;
				}
				else*/
					break;
			}
		}
		DWORD et = GetTickCount();
		if (et - st > 200)
		{
			num = 0;
			MessageBox(_T("one"));
			break;
		}
	}
	CVi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值