- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
1-23九ATL对COM的支持ATL对COM客户端的支持CComPtrCComQIPtr使用ATL开发COM组件添加新的接口添加新的双接口
2-231ATL对COM客户端的支持ATL对COM客户的支持主要体现在智能指针上。当没有对COM对象进行引用计数时,对象的每个接口指针必须密切配合以保持内存的正确性。比如:voidf(void){IFastString*pfs=0;IPersistentObject*ppo=0;pfs=CreateFastString(asdf);if(pfs){ppo=(IPersistentObject*)pfs-Dynamic_Cast(IPersistentObject);if(!ppo)pfs-Delete();//转换不成功,使用pfs来删除对象。else{ppo-Save(c:\\myfile);ppo-Delete();}//转换成功,使用ppo来删除对象。}}
3-23实现了引用计数后,每个对象维护一个引用计数,当接口指针被复制的时候,计数增加;接口指针被销毁的时候,计数减少。1。当接口指针被复制时,调用DuplicatePointer即AddRef2。当接口指针不再有用时调用DestroyPointer即Releasevoidf(void){IFastString*pfs=0;IPersistentObject*ppo=0;pfs=CreateFastString(asdf);if(pfs){ppo=(IPersistentObject*)pfs-Dynamic_Cast(IPersistentObject);if(ppo){ppo-Save(c:\\myfile);ppo-DestroyPointer();}//每个指针各自负责自己。pfs-DestroyPointer();//每个指针各自负责自己。}}或者使用正式的表达方式:
4-23voidGetPointers(LPUNKNOWNpUnk){HRESULThr;LPPERSISTpPersist;LPDISPATCHpDispatch;LPDATAOBJECTpDataObject;hr=pUnk-QueryInterface(IID_IPersist,(LPVOID*)pPersist);//加1if(SUCCEEDED(hr)){hr=pUnk-QueryInterface(IID_IDispatch,(LPVOID*)pDispatch);//加1if(SUCCEEDED(hr)){hr=pUnk-QueryInterface(IID_IDataObject,(LPVOID*)pDataObject);//加1if(SUCCEEDED(hr)){DoIt(pPersist,pDispatch,pDataObject);//同时使用三个指针pDataObject-Release();}//-1pDispatch-Release();}//-1pPersist-Release();}//-1pUnk指向的对象的引用计数,在退出此函数时保持不变。}比较没有引用计数的情况,有了很大的进步。但是仍然要小心。
5-231.1CComPtrtemplateclassTclassCComPtr{public:typedefT_PtrClass;T*p;//数据成员CComPtr(){p=NULL;}//缺省构造函数CComPtr(T*lp){if((p=lp)!=NULL)p-AddRef();}//构造函数1引用计数加1CComPtr
您可能关注的文档
最近下载
- 检验科职业安全防护和职业暴露紧急处理.pptx
- 加油站安全风险分级管控清单.docx VIP
- T∕CBMF 37-2018 T∕CCPA 7-2018- 超高性能混凝土基本性能与试验方法.pdf
- 公开课----议论文阅读——论证思路省公开课获奖课件市赛课比赛一等奖课件.pptx
- 2024新苏教版一年级数学上册全一册全部教案(共21课时).pdf VIP
- 《我和小姐姐克拉拉》乐读分享ppt课件[文字可编辑].ppt
- 工程经济学第3版教学课件第二章 资金时间价值与现金流量.pdf
- 数据透视表教程-教学课件.pptx
- 日立GVF2、NPH系列FMT板、A板使用说明(2).pdf VIP
- 传染病预防控制必修和选修答案-2024年全国疾控系统“大学习”活动.docx VIP
文档评论(0)