响应鼠标单击事件后怎么不能响应鼠标双击事件?

liyan19821021 2005-12-09 09:22:59
发现不能响应鼠标双击事件OnLButtonDblClk,后来追究原因是因为之前添加了鼠标单击事件OnLButtonDown,每次鼠标双击时,只会响应OnLButtonDown,而不会响应OnLButtonDblClk,怎么解决啊
...全文
242 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
guosx 2005-12-09
  • 打赏
  • 举报
回复
关注
Snow_Ice11111 2005-12-09
  • 打赏
  • 举报
回复
我在上面的那个贴子中已经解释得很清楚,可还是不清楚该贴的贴主清楚了没有^_^
Snow_Ice11111 2005-12-09
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4390/4390653.xml?temp=.2197992
xiaoqiqixiao 2005-12-09
  • 打赏
  • 举报
回复
没听说会这样的,楼主自己新建一工程
在OnLButtonDown和OnLButtonDblClk中TRACE看看,都会触发的,肯定是其它问题
rainliuyu 2005-12-09
  • 打赏
  • 举报
回复
void CDoubleClickDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
MSG message;
DWORD st = GetTickCount();
while(1)
{
if(::PeekMessage(&message, NULL, 0 ,0 , PM_REMOVE))
{
::TranslateMessage(&message);
::DispatchMessage(&message);
if(message.message == WM_LBUTTONDBLCLK)
return;
}
DWORD et = GetTickCount();
if(et - st > 200)
break;
}

AfxMessageBox("clicked!"); // single click
CDialog::OnLButtonDown(nFlags, point);
}

这就是在单击响应里设置一个循环,在一定时间内检测到其实是个双击消息的话,那就去响应双击消息。
Featured 2005-12-09
  • 打赏
  • 举报
回复
你为什么既要相应单击,又要相应双击事件?
真的有此必要?

如果真的需要,那就这样:
消息循环中先PeekMessage,然后再GetMessage
发现是某按键的单击消息,就不GetMessage,而直接处理该消息。

原因是:GetMessage将第一次单击事件从消息链上取下来了,无法形成双击
thisisll 2005-12-09
  • 打赏
  • 举报
回复
两个消息都会收到
肯定是先处理OnLButtonDown了
之后才会处理双击
supergreenbean 2005-12-09
  • 打赏
  • 举报
回复
这个消息就是这么处理的,你要么设置个时间间隔来检查是否发生连续单击
liyan19821021 2005-12-09
  • 打赏
  • 举报
回复
今天不下雨的方法非常简洁易用!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧