yongjun_gong 发表于 2011-1-3 08:45:47

VC++6.0中如何实现按钮控制的mouseup/down 事件的捕捉????

VC++6.0中如何实现按钮控制的mouseup/down 事件的捕捉/

brightsm 发表于 2011-1-3 13:55:02

HOOK

消息钩子编程,利用消息钩子捕捉事件!
介绍个网站:http://www.vckbase.com/

rlogin 发表于 2011-1-3 18:55:26

用不着勾子这么复杂的东西,处理鼠标消息就可以了

Appcat 发表于 2011-1-3 19:01:13

如果要处理的是自己程序内部鼠标事件,确实只要在程序中处理相应鼠标消息就OK,
如果是处理别的进程里边的消息,就需要钩子了。楼主去CSDN翻翻吧,大把的文章。

118139 发表于 2011-1-3 19:07:08

现在号称中国最大源码搜索引擎
因有尽有。。
www.hackchina.com

seacat 发表于 2011-1-5 17:56:48

mfc么?重载窗口的PreTranslateMessage函数,自己处理MSG,通过hwnd判断控件,message判断事件

ytangy 发表于 2011-1-5 19:45:50

5楼的方法可以,最近才用过这个东西!只是我们用的更笨的办法,在获取lbuttondown事件以后,直接去判断的鼠标所在位置对应的是哪个按键。
经过实验,如果仅响应窗口的LButtondown和UP事件的话,会发现在点空白处的时候能进到事件响应函数中,而在点具体某个按钮时不会进入事件响应函数!
我们在做这个的时候也花了好多时间,希望可以给其他兄弟一点协助。稍候回家把代码贴出来。

brightsm 发表于 2011-1-5 22:38:38

回复【6楼】ytangy
5楼的方法可以,最近才用过这个东西!只是我们用的更笨的办法,在获取lbuttondown事件以后,直接去判断的鼠标所在位置对应的是哪个按键。
经过实验,如果仅响应窗口的lbuttondown和up事件的话,会发现在点空白处的时候能进到事件响应函数中,而在点具体某个按钮时不会进入事件响应函数!
我们在做这个的时候也花了好多时间,希望可以给其他兄弟一点协助。稍候回家把代码贴出来。
-----------------------------------------------------------------------

重载lbuttondown消息就行了。

ytangy 发表于 2011-1-5 23:02:30

先把我的实现方式贴出来。
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的方式实现“按下”“释放”两个事件分别触发。
感激不尽。

cy757 发表于 2011-1-5 23:18:52

我博客中有篇文章刚好讲到这个问题。
http://blog.csdn.net/cy757/archive/2009/08/07/4424060.aspx

yaya001 发表于 2011-1-6 00:32:38

mark
页: [1]
查看完整版本: VC++6.0中如何实现按钮控制的mouseup/down 事件的捕捉????