公共部分:
IFace.h #pragma once #include interface IX : public IUnknown { virtual void _stdcall Fx() = 0; }; interface IY : public IUnknown { virtual void _stdcall Fy() = 0; }; interface IZ : public IUnknown { virtual void _stdcall Fz() = 0; }; extern "C" { extern const IID IID_IX; extern const IID IID_IY; extern const IID IID_IZ; }; Guids.cpp #include extern "C" { extern const IID IID_IX = {0xec53e1de, 0x37d, 0x48f5, {0xa1, 0xee, 0x2d, 0xf5, 0xa5, 0xde, 0xf3, 0x49}}; // {EC53E1DE-037D-48f5-A1EE-2DF5A5DEF349} extern const IID IID_IY = {0x4c510b77, 0xc63a, 0x4e0f, {0xa2, 0x45, 0x7b, 0x21, 0x23, 0x12, 0x23, 0xe7}};// {4C510B77-C63A-4e0f-A245-7B21231223E7} extern const IID IID_IZ = {0xefb1f8d4, 0x674e, 0x4123, {0xa9, 0x19, 0x3c, 0x72, 0xee, 0xe8, 0x1d, 0x92}};// {EFB1F8D4-674E-4123-A919-3C72EEE81D92} } 组件部分:
Component.h #pragma once #include "IFace.h" #include using namespace std; class CA : public IX, public IY { public: CA() : m_cRef(0){ }; ~CA() { } public: virtual HRESULT _stdcall QueryInterface(REFIID riid, __RPC__deref_out void **ppvObject); virtual ULONG _stdcall AddRef(); virtual ULONG _stdcall Release(); virtual void _stdcall Fx() { cout(this); } else if(IID_IY == riid) { *ppvObject = static_cast(this); } else if(IID_IUnknown == riid) { *ppvObject = static_cast(this); } else { *ppvObject = NULL; return E_NOINTERFACE; } reinterpret_cast(*ppvObject)->AddRef(); return S_OK; } ULONG _stdcall CA::AddRef() { InterlockedIncrement(&m_cRef); return m_cRef; } ULONG _stdcall CA::Release() { if(InterlockedDecrement(&m_cRef) == 0) { delete this; return 0; } return m_cRef; } 客户部分:
Client.cpp #include "Component.h" //这个函数应在组件部分 放在Component.h中link2005错误(重复定义) 放到Component.cpp中找不到定义 extern "C" IUnknown* CreateInstance() { IUnknown *pIUnk = static_cast(new CA); pIUnk->AddRef(); return pIUnk; } void _tmain(int argc,_TCHAR*argv[]) { IUnknown *pIUnk = CreateInstance(); IX *pIX = NULL; HRESULT hr = pIUnk->QueryInterface(IID_IX,(void**)&pIX); if(SUCCEEDED(hr)) { pIX->Fx(); pIX->Release(); } IY *pIY = NULL; hr = pIUnk->QueryInterface(IID_IY,(void**)&pIY); if(SUCCEEDED(hr)) { pIY->Fy(); pIY->Release(); } IZ *pIZ = NULL; hr = pIUnk->QueryInterface(IID_IZ,(void**)&pIZ); if(SUCCEEDED(hr)) { coutRelease(); } pIUnk->Release(); }
发表评论
-
SQL Server 数据库连接字符串参数一览表
2012-07-06 09:52 882我的网易博客: http: ... -
Flex 4 控件居中问题
2012-07-02 13:33 701今天尝试了一下,flex4开发,做了个panel,设置Ap ... -
Flex加载文件数据流
2012-07-02 13:32 655Flex加载文件数据流 本文使用URLStream, ... -
Flex小贴士:OpaqueBackground
2012-07-02 13:32 703早在我开始使用Flex时我就开发flash 了,但是现在我 ... -
[转载]每天学一点Flex(1):DataGrid组件分页
2012-07-02 13:32 580原文地址: http://blog.csdn.net/he ... -
Flex 与 JavaScript 实现交互!!
2012-07-02 13:32 655layout="horizonta ... -
Flex + LCDS + Java 入门教程
2012-07-01 11:01 599一.引 很多 ... -
QTP测试Flex页面的步骤
2012-07-01 11:01 672需要的环境: ... -
Flex Memory Management and Memory Leaks (zz)
2012-07-01 11:01 466You probably heard, read or e ... -
flex 绑定资源
2012-07-01 11:01 603Adobe Flex supports several i ... -
Flex编程学习基础
2012-07-01 11:01 661Flex是Adobe公司推出 ...
相关推荐
该资料是《COM技术内幕——微软组件对象模型》一书的随书源代码 COM技术内幕——微软组件对象模型 基本信息 原书名: Inside COM: Microsoft's Component Object Model with Cdrom 原出版社: Microsoft Press ...
COM 技术内幕——微软组件对象模型(PDF).pdf
COM技术内幕pdf及源代码,完整版源代码 COM技术内幕pdf及源代码,完整版源代码 COM技术内幕pdf及源代码,完整版源代码
COM技术内幕:微软组件对象模型 COM技术内幕:微软组件对象模型
COM技术内幕——微软组件对象模型(附加源代码).pdf 我用它入门的书籍,非常好!
COM技术内幕微软组件对象模型,COM技术内幕微软组件对象
COM技术内幕源码
COM 技术内幕——微软组件对象模型(PDF).pdf
com技术内幕源代码,大家一起学习。
《COM技术内幕_微软组件对象模型》配套代码
Java P2P技术内幕代码 Java P2P技术内幕代码 Java P2P技术内幕代码
COM技术内幕-微软组件对象现在网上能下载到的PDF文档内容都很模糊,不清晰。在第九章中的CFactory和CUnknown基类没有完整的示例。有需要的可以下载看看,里面有ReadMe.txt。
vc++技术内幕代码 各个方面都包括 mfc activex Basic Event Handling, Mapping Modes, and a Scrolling View
COM技术内幕》是一本很有意思的书,可以说是中级程序员到高级程序员的过渡,有兴趣的朋友不防学学。COM,即Microsoft组件对象模型...下面是网上有关《COM技术内幕》一书的笔记,对COM技术的理解与复习都有一定的好处。
标题为"《COM技术内幕》配套代码 含 TANGRAM” 的资源实为《com原理与应用》配套代码。该资源才是正确的《COM技术内幕》配套代码。 另外发现,自己也无法在自己的资源中添加备注,只好再在再次说明。不知CSDN何时会...
潘爱民先生在北大COM组件讲义中的源代码
COM技术内幕——微软组件对象模型.rar COM技术内幕——微软组件对象模型.rar COM技术内幕——微软组件对象模型.rar
由 Dale Rogerson 撰写的《COM技术内幕——微软组件对象模型》(Inside COM)一书附带的源码适合在Visual C++ 6.0下编译,同样的源码拿到 Visual Studio 2010 下面进行编译,会报告很多错误。因此本人对源码中的错误...
Don Box的《COM技术内幕》(潘爱民译)随书源代码。
COM技术内幕完整源码.当初找这个花了不少时间.主要是完整性.COM技术内幕和windows核心都是初学者很不错的资料.