哪个钩子可以可靠钩住 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试试