long lfnProc=GetWindowLong(hWnd,GWL_WNDPROC);
SetWindowLong(hWnd,GWL_WNDPROC,(long)WndProc);
LRESULT WndProc(....)
{
WM_PAINT:第一个调用
WM_NCPAINT:第二个调用
WM_ERASEBKGND:第三个调用
::CallWindowProc(lfnProc,....)
}
long lfnProc=GetWindowLong(hWnd,GWL_WNDPROC);
SetWindowLong(hWnd,GWL_WNDPROC,(long)WndProc);
LRESULT WndProc(....)
{
WM_PAINT:第一个调用
WM_NCPAINT:第二个调用
WM_ERASEBKGND:第三个调用
::CallWindowProc(lfnProc,....)
}