vc学习分析mfc中的映射

vc学习分析mfc中的映射

ID:28447991

大小:78.62 KB

页数:4页

时间:2018-12-10

vc学习分析mfc中的映射_第1页
vc学习分析mfc中的映射_第2页
vc学习分析mfc中的映射_第3页
vc学习分析mfc中的映射_第4页
资源描述:

《vc学习分析mfc中的映射》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、VC++学习:分析MFC中的映射作者:jiangsheng/CSDN条件齊找映射MFC屮大呈使用了BEGIN_XXX_MAP这样的宏,以及映射进行查找优化,例如消息映射,OLE命令映射,以及接门等等。每个映射包含一个指向基类的映射的指针。这样,当一个类需耍根据一定的条件查找一个对象吋,它会齊找木类对象,如果没冇找到,那么会杳找基类,直到根基类。这类杳找包含Windows消息,命令,事件和OLE命令的分发,和对象实现的接口的杳询等等。下面是函数BOOLCWnd::OnWndMsg(UINTmessage,WPARAMwParam,LPARAMIParam,LRESULT*pResult)

2、的部分代码,演示了如何根裾消息的ID査找处理函数。constAFX—MSGMAP*pMessageMap;pMessageMap=GetMessageMapO;UINTiHash;iHash=(LOWORD((DWORD_PTR)pMcssagcMap)Amessage)&(iHashMax-1);AfxLockGlobals(CRIT_WINMSGCACHE);AFX—MSG—CACHE*pMsgCache;pMsgCache=&_afxMsgCache[iHash];constAFX_MSGMAP_ENTRY*IpEntry;if(message==pMsgCache->nMsg&

3、&pMessageMap==pMsgCache->pMessageMap){//cachehitIpEntry=pMsgCache->lpEntry;AfxUnlockGlobals(CRIT_WINMSGCACHE);if(IpEntry=NULL)returnFALSE;//cachehit,anditneedstobehandledif(messagepMe

4、ssageMap=pMessageMap;#ifdef^AFXDLLfor(/*pMessageMapalreadyinited*/;pMessageMap->pfnGetBaseMap!=NULL;pMessageMap=(*pMessageMap->pfnGetBaseMap)())#elsefor(/*pMessageMapalreadyinifed*/;pMessageMap!=NULL;pMessageMap=pMessageMap-〉pBaseMap)#cndif//Note:catchnotsocommonbutfatalmistake!!//BEGIN_MESSAGE_

5、MAP(CMyWnd,CMyWnd)#ifdef_AFXDLLASSERT(pMessageMap!=(*pMessageMap->pfnGetBaseMap)());#elseASSERT(pMessageMap!=pMessageMap->pBaseMap);#endifif(messagelpEntrics,message,0,0))!=NULL){pMsgCache->lpEntry=IpEntry;AfxUnlockGIob

6、als(CRIT_WINMSGCACHE);gotoLDispatch;))else{//registeredwindowsmessageIpEntry=pMessageMap-〉lpEntries;while((IpEntry=AfxHindMessageEntry(lpEntry,OxCOOO,0,0))!=NULL){UINT*pnlD=(UINT*)(lpEntry->nSig);ASSERT(*pnID>=OxCOOO

7、

8、*pnID==0);//mustbesuccessfullyregisteredif(*pnID==message){pMsgCache->lpEntry=

9、IpEntry;AfxUnlockGlobals(CRIT.WINMSGCACHE);gotoLDispatchRegistered;)lpEntry++;//keeplookingpastthisone}))pMsgCache-〉lpEntry=NULL;AfxUnlockGlobaIs(CRIT_WINMSGCACHE);returnFALSE;)IDispatch:注意对查找结果的缓存可以提高查找的效率。不耍被MFC起的名字欺骗丫,从数据

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。