大家好,WM_LBUTTONDOWN和WM_LBUTTONDBLCLK之间的事情…………

111222 2002-03-18 10:37:35
看过这个问题你可能觉得有些晕,真是对不起。

由于特殊原因,我现在要在不影响WM_LBUTTONDOWN映射函数的功能的前提下

使WM_LBUTTONDBLCLK不激发WM_LBUTTONDOWN消息。


比如:

void CCC::OnLButtonDown(UINT nFlags, CPoint point)
{
AfxMessageBox("鼠标蛋鸡!");

CWnd::OnLButtonDown(nFlags, point);
}

void CCC::OnLButtonDblClk(UINT nFlags, CPoint point)
{
AfxMessageBox("鼠标双机!");

CWnd::OnLButtonDblClk(nFlags, point);
}

上面代码呢,鼠标双击将会出发“鼠标蛋鸡”。我就是想“鼠标双机”的时候不触发“鼠标蛋鸡”

怎么做啊?

...全文
349 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mickey_Chue 2002-03-18
  • 打赏
  • 举报
回复
啊! strip(阿飞)已经搞定了啦?办法很精巧,佩服佩服!
Mickey_Chue 2002-03-18
  • 打赏
  • 举报
回复
呵呵, strip(阿飞)已经搞定啦?佩服佩服:)
Mickey_Chue 2002-03-18
  • 打赏
  • 举报
回复
呵呵,不会是CSDN认为你已经“多击”了吧?

我有个想法,虽然很烂:P

设两个标志:
BOOL bDblClicked = FALSE;
CTime DblTime;
和一个常量Sec = 200; // 200ms


void CCC::OnLButtonDown(UINT nFlags, CPoint point)
{
if( !bDblClicked && (DblTime等于0) //第一次按下LBUTTON
{
DblTime=当前系统时间;
Return;
}

if( bDblClicked ) //已经双击
{
DblTime = 0;
bDblClicked = FALSE;
}
if( DblTime 大于 Sec ) //已经超过双击等待时限,认定为单击
{
AfxMessageBox("鼠标臭鸡蛋!");
CWnd::OnLButtonDown(nFlags, point);
}
}

呀呀呀,不对呀,再想想...........
MSVCer 2002-03-18
  • 打赏
  • 举报
回复
改用其它的操作方式吧,不管用什么方法都会造成单击时反应迟钝,我用过,很不爽
strip 2002-03-18
  • 打赏
  • 举报
回复
BOOL bShouldTrigger = TRUE;
void CDbClickDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
if( nFlags&0x8000 )
AfxMessageBox("鼠标蛋鸡!");
else
{
bShouldTrigger = TRUE;
// UINT aa = GetDoubleClickTime(); // 我的系统是500ms
SetTimer( 109, 200, 0 );
}
CDialog::OnLButtonDown(nFlags, point);
}
void CDbClickDlg::OnLButtonDblClk(UINT nFlags, CPoint point)
{
bShouldTrigger = FALSE;
AfxMessageBox("鼠标双机!");
CDialog::OnLButtonDblClk(nFlags, point);
}

void CDbClickDlg::OnTimer(UINT nIDEvent)
{
if( nIDEvent == 109 )
{
KillTimer( 109 );
if( bShouldTrigger )
PostMessage( WM_LBUTTONDOWN, MK_LBUTTON|0x8000 , 0 );
}
CDialog::OnTimer(nIDEvent);
}

测试着还不错,感觉
111222 2002-03-18
  • 打赏
  • 举报
回复
奇怪,我只按了一次“发帖子”怎么建了这么多topic

UP
whz_time 2002-03-18
  • 打赏
  • 举报
回复
这个问题值得好好讨论
delphihero 2002-03-18
  • 打赏
  • 举报
回复
可以用hook 拦截,如果WM_LBUTTONDOWN 和WM_LBUTTONDBLCLK同时存在调用双击,否则调用单击

strip 2002-03-18
  • 打赏
  • 举报
回复
我吃完翻就来建芬
wsa_socket 2002-03-18
  • 打赏
  • 举报
回复
WNDPROC 行吗
richincsdn2 2002-03-18
  • 打赏
  • 举报
回复


先有鸡后有蛋
Flysnow 2002-03-18
  • 打赏
  • 举报
回复
111222真大方,能不能在单击事件加个flag,又击时判断是不是flag被标记过

16,472

社区成员

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

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

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