知了博客

集天地之精华,吸日月之灵气

« WM_DESTROY与WM_CLOSE 65个源代码网站 »

ATL.SubclassWindow分析

ATL.SubclassWindow分析
[template

BOOL CWindowImplBaseT< TBase, TWinTraits >::SubclassWindow(HWND hWnd)

{
BOOL result;

ATLASSUME(m_hWnd == NULL);

ATLASSERT(::IsWindow(hWnd));


// Allocate the thunk structure here, where we can fail gracefully.

//初始化this 指针与winProc
result = m_thunk.Init(GetWindowProc(), this);

if (result == FALSE)

{
return FALSE;

}
WNDPROC pProc = m_thunk.GetWNDPROC();

//取得要subclassWindwo的WinProc
WNDPROC pfnWndProc = (WNDPROC)::SetWindowLongPtr(hWnd, GWLP_WNDPROC, (LONG_PTR)pProc);

if(pfnWndProc == NULL)

return FALSE;

//把取得的Windproc 去sub上
m_pfnSuperWindowProc = pfnWndProc;

//并把本身的m_hWnd 换成要sub上的hWnd
m_hWnd = hWnd;

return TRUE;

}


从上面分析可以看出做的步骤有:

1.sub资源上的wndProc

2.sub资源上的hWnd

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Arwen Build 90619 Code detection by Codefense  theme by BokeZhuti

Copyright know blog. Some Rights Reserved.站长(msn):webmaster#webgou.info(#换成@) 粤ICP备09183716号