读书人

求救!哪位大侠熟悉钩子和WINDOWS消息

发布时间: 2012-01-28 22:06:13 作者: rapoo

求救!哪位大侠熟悉钩子和WINDOWS消息?小弟不知道该用哪种钩子拦截哪种消息了。分不够再加
小弟想拦截对话框中的按钮消息,就是对话框中的BUTTON按下时的消息 ,很多对话框包括WINDOWS自己的对话框,这个消息比较好过滤,我只要安装 WH_CALLWNDPROC 钩子,在WM_COMMADN 消息中,加入以下过滤条件 :
CWPSTRUCT* pCwp = (CWPSTRUCT*)lParam;
(HIWORD(pCwp-> wParam) == 0 )&& ((HWND) (pCwp-> lParam )!= NULL)
基本可以准确捕获到对话框的按钮消息。

但我也发现许多对话框,用上面的方法是捕获不到的。也许当按下按钮时会发出 WM_COMMAND消息,但我的程序是没有办法过滤到这个消息,因为WM_COMMAND消息实在是太多了,我怎么知道哪一个是按按钮产生的呢?所以用WM_COMMAND消息似乎不行,不知道其他消息行不行,我的目的是拦截用户在对话框中进行的操作,比如按下按钮,或者勾选了单选框等等,我不关心用户进行了什么操作,但我一定要拦截这个消息。 用其他类型的钩子会不会容易实现?

WH_MSGFILTER钩子似乎可以捕捉到按钮本身的消息?小弟没用过这种钩子,请熟悉的大哥们给个建议。谢谢,分不够再加。分不是问题

[解决办法]
WM_COMMAND的lParam是产生消息的控件句柄,之后可以用GetWindowText和GetClassName取得文本和类名,之后进行判断。
[解决办法]
The BN_CLICKED notification code is sent when the user clicks a button.

读书人网 >VC/MFC

热点推荐