VC++6.0中如何实现按钮控制的mouseup/down 事件的捕捉????
VC++6.0中如何实现按钮控制的mouseup/down 事件的捕捉/ HOOK消息钩子编程,利用消息钩子捕捉事件!
介绍个网站:http://www.vckbase.com/ 用不着勾子这么复杂的东西,处理鼠标消息就可以了 如果要处理的是自己程序内部鼠标事件,确实只要在程序中处理相应鼠标消息就OK,
如果是处理别的进程里边的消息,就需要钩子了。楼主去CSDN翻翻吧,大把的文章。 现在号称中国最大源码搜索引擎
因有尽有。。
www.hackchina.com mfc么?重载窗口的PreTranslateMessage函数,自己处理MSG,通过hwnd判断控件,message判断事件 5楼的方法可以,最近才用过这个东西!只是我们用的更笨的办法,在获取lbuttondown事件以后,直接去判断的鼠标所在位置对应的是哪个按键。
经过实验,如果仅响应窗口的LButtondown和UP事件的话,会发现在点空白处的时候能进到事件响应函数中,而在点具体某个按钮时不会进入事件响应函数!
我们在做这个的时候也花了好多时间,希望可以给其他兄弟一点协助。稍候回家把代码贴出来。 回复【6楼】ytangy
5楼的方法可以,最近才用过这个东西!只是我们用的更笨的办法,在获取lbuttondown事件以后,直接去判断的鼠标所在位置对应的是哪个按键。
经过实验,如果仅响应窗口的lbuttondown和up事件的话,会发现在点空白处的时候能进到事件响应函数中,而在点具体某个按钮时不会进入事件响应函数!
我们在做这个的时候也花了好多时间,希望可以给其他兄弟一点协助。稍候回家把代码贴出来。
-----------------------------------------------------------------------
重载lbuttondown消息就行了。 先把我的实现方式贴出来。
BOOL CcanshowDlg::PreTranslateMessage(MSG* pMsg)
{
BYTE tmp = 0;
tmp = FindButton();
BYTE Txdata;
switch(pMsg->message)
{
case WM_LBUTTONDOWN:
break;
case WM_LBUTTONUP:
break;
}
}
重写PreTranslateMessage这个函数,从传进来的参数中可以得到当前是什么事件发生了,然后我筛选出我需要的消息WM_LBUTTONDOWN 和 WM_LBUTTONUP
FindButton(); 用来找出是窗口上的哪个按键被按下了。实现如下:
BYTE CcanshowDlg::FindButton(void)
{
CPoint point;
GetCursorPos(&point);
CWnd *pWnd;
CRect rc;
pWnd = GetDlgItem(IDC_BUTTON2);
pWnd->GetWindowRect(rc);
if(rc.PtInRect(point))
return 1;
pWnd = GetDlgItem(IDC_BTFL_DW);
pWnd->GetWindowRect(rc);
if(rc.PtInRect(point))
return 2;
}
可能有点笨,但达到了目的。
我元旦找了好几天,所有人在论坛上的回答都是重载lbuttondown消息就可以了。但具体怎么实现一直没有找到参考。http://www.vckbase.com/似乎有相关的东西,但好像下载都是要花钱的。
希望这点东西可以帮助到顶楼的兄弟。同时也希望有朋友可以教一下具体怎么用重载lbuttondown的方式实现“按下”“释放”两个事件分别触发。
感激不尽。 我博客中有篇文章刚好讲到这个问题。
http://blog.csdn.net/cy757/archive/2009/08/07/4424060.aspx mark
页:
[1]