Re: How to catch WM_PAINT use Hook in Dialog?
Dear,
m_pParentWnd -----------is a static member of the class,
and my CALLBACK function is static member of the class,
And I have send you my test hook code to newcomer@flounder.com ,if you have
any time.
Thanks
Green
2007-06-06
"Joseph M. Newcomer" <newcomer@flounder.com>
??????:d3ab63pisc059kb9uhdq628d0l9v7t3gl8@4ax.com...
On Tue, 5 Jun 2007 12:47:06 +0800, "green" <greenabc300@163.com> wrote:
m_hCallWndhook =
SetWindowsHookEx(WH_CALLWNDPROC,CallWndProc,/*NULL*/AfxGetApp()->m_hInstanc
e
,GetCurrentThreadId());
LRESULT C***::CallWndProc(int nCode, WPARAM wParam, LPARAM lParam)
{
****
presumably this is declared as
static LRESULT CALLBACK CallWndProc(int, WPARAM, LPARAM);
so why is the word CALLBACK missing in the above declaration?
****
CWPSTRUCT* cwps = (CWPSTRUCT*)lParam;
if ( cwps->hwnd != m_pParentWnd->m_hWnd ) //if is not the Dialog
,
return.
****
What is m_pParentWnd? It can't be a class member of the class because
this function
cannot be a class member function, so what is it?
****
return
CallNextHookEx(m_hCallWndhook,nCode,wParam,lParam);
****
Likewise, m_hCallWndhook cannot be a class member because the callback
cannot have access
to any member variable, because it must be static.
I have a suspicion that you have deeper problems here. Fix all the above
problems first.
joe
****
CString str;
str.Format("nCode:%d ,wParam:%d ,lParam:%d ,
message:0x%04X.\r\n",nCode,wParam,lParam,cwps->message);
//OutputDebugString(str);
if( cwps->message == WM_PAINT )
OutputDebugString(_T("----------------WM_PAINT
..\r\n"));
if( cwps->message == WM_ERASEBKGND )
OutputDebugString(_T("----------------WM_ERASEBKGND
.\r\n"));
return CallNextHookEx(m_hCallWndhook, nCode, wParam, lParam);
}
"Tom Serface" <tom.nospam@camaswood.com>
??????:64390268-6EE2-4970-88EF-5814EB0F4A63@microsoft.com...
Could you post a bit of the code? Why are you trying to hook WM_PAINT
rather than just putting you code into the OnPaint() routine?
Tom
"green" <greenabc300@163.com> wrote in message
news:%23zbVbdypHHA.4120@TK2MSFTNGP06.phx.gbl...
Dear all,
I used WH_CALLWNDPROC,
but in the hook function, WM_PAINT can only catch once (only when
dialog
'
Create'), Then OnPaint is called ,but in Hook function ,I do not
catch
WM_PAINT.
Thanks
green
2007-06-05
Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm