首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

求救!哪位大侠熟悉钩子和WINDOWS消息?小弟不知道该用哪种钩子拦截哪种消息了。分不够再加解决办法

2012-01-28 
求救!哪位大侠熟悉钩子和WINDOWS消息?小弟不知道该用哪种钩子拦截哪种消息了。分不够再加小弟想拦截对话框

求救!哪位大侠熟悉钩子和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.

热点排行