关于<<深入浅出mfc>>中MFC的消息映射与命令传递 ,AFX_PMSG pfn是如何调用不同类型的成员函数的?
union MessageMapFunctions mmf;
mmf.pfn = lpEntry->pfn;
nSig = lpEntry->nSig;
switch (nSig)
{
default:
ASSERT(FALSE);
break;
case AfxSig_bD:
lResult = (this->*mmf.pfn_bD)(CDC::FromHandle((HDC)wParam));
break;
case AfxSig_bb: // AfxSig_bb, AfxSig_bw, AfxSig_bh
lResult = (this->*mmf.pfn_bb)((BOOL)wParam);
break;
case AfxSig_vv:
(this->*mmf.pfn_vv)();
break;
case AfxSig_vw: // AfxSig_vb, AfxSig_vh
(this->*mmf.pfn_vw)(wParam);
break;
...
本人不明白MFC是如何通过mmf.pfn = lpEntry->pfn;来执行(this->*mmf.pfn_vw)(wParam)等语句的.
虽然在union MessageMapFuncions{
AfX_PMSG pfn;
void (AFX_MSG_Call CWnd::*pfn_vw)(UINT);
...}有定义,但本人始终不明白如何将两者联系起来.请各位帮忙!