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

哪个钩子可以可靠钩住 WM_PAINT(CDialog) ?解决方法

2012-03-28 
哪个钩子可以可靠钩住 WM_PAINT(CDialog) ?我用了WH_CALLWNDPROC,钩子函数中CWPSTRUCT*cwps(CWPSTRUCT*)l

哪个钩子可以可靠钩住 WM_PAINT(CDialog) ?
我用了   WH_CALLWNDPROC   ,

钩子函数中
CWPSTRUCT*   cwps   =   (CWPSTRUCT*)lParam;
if(   cwps-> message   ==   WM_PAINT   )
TRACE(_T( "PM_REMOVE----------------WM_PAINT   .\r\n "));

但是对话框调用   OnPaint   了,在钩子函数中始终未   cwps-> message   ==   WM_PAINT   为真。

[解决办法]
详细代码...
[解决办法]
::SetWindowLong(m_flashPlayer.GetSafeHwnd(),GWLP_WNDPROC,(LONG)YourWindowProc);
在YourWindowProc中处理就行
[解决办法]
WH_SHELL,试试看
[解决办法]
typedef UINT WPARAM;
typedef LONG LPARAM;
[解决办法]
请给出一下 wParam 和 lParam 的解释,是什么结构的指针?
随你,一般在lParam指向一个指针参数,强制转换一下就行了。
[解决办法]
WH_GETMESSAGE
刚用这个试过,绝对可以捕到wm_paint
[解决办法]
好象创建时的WM_PAINT是肯定能获得的!
不过子类化指定窗口
应该可以获得的!
WNDPROC wpOrigProc;

wpOrigProc = (WNDPROC)::SetWindowLong(hWnd,
GWL_WNDPROC, (LONG)SubclassProc);

子类化的窗体处理函数
LRESULT APIENTRY SubclassProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_PAINT)
{
}

return CallWindowProc(wpOrigProc, hwnd, uMsg,
wParam, lParam);
}

至于你说的那个为什么不好使,我也不怎么清楚!
CSDN上有这样一句话!但是我没怎么看明白!如果有高手路过的话,帮忙解释下!^_^
The system sends an internal WM_PAINT message only once. After an internal WM_PAINT message is returned from GetMessage or PeekMessage or is sent to a window by UpdateWindow, the system does not post or send further WM_PAINT messages until the window is invalidated or until RedrawWindow is called again with the RDW_INTERNALPAINT flag set.



[解决办法]
钩WH_GETMESSAGE试试

热点排行