Hook消息WM_PAINT的时候,钩子类型确切的是用哪个? WH_CALLWNDPROC / WH_GETMESSAGE还是别的?我都用过了,总是拦截不到。是不是WH_GETMESSAGE的过滤函数名一定要是GetMsgProc?不一定吧?搜索了一下,很多人都是捕风捉影,请拦截成功过的朋友给一个明确的答案,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的写法:SetWindowsHookEx(WH_GETMESSAGE,myProc,glhInstance,0);myProc中:HWND hWordWnd=NULL; PMSG pMsg=(PMSG)lparam; h_tWnd=FindWindow(NULL,"***");//要拦截的目标窗体 if(h_tWnd!=NULL&&pMsg->hwnd==h_tWnd) { if(pMsg->message==WM_PAINT) { MessageBox(NULL,"sucess!","sucess",MB_OK); return 1; } else { return CallNextHookEx(glhHook,nCode,wparam,lparam); } } else { return CallNextHookEx(glhHook,nCode,wparam,lparam); }上面的代码可以跳出我的测试对话框,但是如果我注释掉//MessageBox(NULL,"sucess!","sucess",MB_OK);被拦截窗体却依旧可以重画界面,问题在哪里? return NULL;或return -1试试。 这说明你钩到了WM_PAINT,否则不会弹出对话框的。 将return 1; 改成return CallNextHookEx(glhHook,nCode,wparam,lparam);试试 return 1; 改成return CallNextHookEx(glhHook,nCode,wparam,lparam);?肯定不行啊 那我不是把这个消息又传递下去了 WH_CALLWNDPROC比较好,虽然你要处理WM_PAINT消息,有时可能还需要原来的过程来进行默认处理 已经拦截到消息,实现在家onpaint消息,绘制到窗口上就可以。lz,难道要做皮肤 我发现用上面代码确实已经拦截到了,但是问题在于如何return才能使得目标窗体不再收到这个消息,也就是消息在我这里丢弃 VC 截屏性能问题 IXMLHTTPRrequestPtr 异步问题 一个获取鼠标位置的程序,为什么老提示Point未定义呀 MFC的程序,包含了AFXSOCKETINIT()这个函数,怎样让它生成的可执行文件拿到其它机器上也能用。 汗一个 , 打印的问题 HELP:无模式对话框消息响应 用了ON_COMMAND_RANGE,但按钮都是灰的,怎么Enable他们呀? 非常好的VC方面的书!有电子版可以下载!推荐! 宣传一吓``刚发现一个VC的网站`不错`` 怎样调试突然全部退出的程序 网络协议高手请进 Toolbar上按钮的样式问题
SetWindowsHookEx(WH_GETMESSAGE,myProc,glhInstance,0);
myProc中:
HWND hWordWnd=NULL;
PMSG pMsg=(PMSG)lparam;
h_tWnd=FindWindow(NULL,"***");//要拦截的目标窗体
if(h_tWnd!=NULL&&pMsg->hwnd==h_tWnd)
{
if(pMsg->message==WM_PAINT)
{
MessageBox(NULL,"sucess!","sucess",MB_OK);
return 1;
}
else
{
return CallNextHookEx(glhHook,nCode,wparam,lparam);
}
}
else
{
return CallNextHookEx(glhHook,nCode,wparam,lparam);
}上面的代码可以跳出我的测试对话框,但是如果我注释掉
//MessageBox(NULL,"sucess!","sucess",MB_OK);
被拦截窗体却依旧可以重画界面,问题在哪里?
或return -1试试。
肯定不行啊 那我不是把这个消息又传递下去了