求com应用的小例子@

迷途的书童 2010-07-01 11:29:39

越简单越好,

只是对com的使用一直比较困惑。

很想知道com怎么封装接口

怎么在主程序里面调用。


谢谢@
...全文
81 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
paerxiushi 2010-07-04
  • 打赏
  • 举报
回复
给你一个最简单的COM组件类:

void trace(const char* mess){cout<<mess<<endl;}
class CA:public IX,public IY
{
public:
virtual HRESULT _stdcall QueryInterface(const IID& riid, void **ppvObject);
virtual ULONG _stdcall AddRef();
virtual ULONG _stdcall Release();
private:
long m_cRef;
public:
CA():m_cRef(0){}
~CA();
public:
virtual void _stdcall Fx(){cout<<"CA::Fx()"<<endl;}
virtual void _stdcall Fy(){cout<<"CA::Fy()"<<endl;}

};

CA::~CA()
{
trace("CA:Release himself");
}

HRESULT _stdcall CA::QueryInterface(const IID& riid, void **ppvObject)
{
if(riid==IID_IUnknown)
{
trace("client get the interface IUnkown");
*ppvObject=static_cast<IX*>(this);
}
else if(riid==IID_IX)
{
trace("client get the interface IX.");
*ppvObject=static_cast<IX*>(this);
}
else if (riid==IID_IY)
{
trace("client get the interface IY");
*ppvObject=static_cast<IY*>(this);
}
else if (riid==IID_IZ)
{
trace("client can not get the interface IZ");
*ppvObject=NULL;
return E_NOINTERFACE;
}
else
{
trace("the component do not support this interface");
*ppvObject=NULL;
return E_NOINTERFACE;
}
reinterpret_cast<IX*>(this)->AddRef();
return S_OK;
}

ULONG _stdcall CA::AddRef()
{
trace("CA:QA add ref count");
return ::InterlockedIncrement(&m_cRef);
}

ULONG _stdcall CA::Release()
{
trace("CA:QA substract ref count");
if(InterlockedDecrement(&m_cRef)==0)
{
delete this;
return 0;
}
return m_cRef;

}
catnm 2010-07-01
  • 打赏
  • 举报
回复
u p
洗洗睡去 2010-07-01
  • 打赏
  • 举报
回复
不错啊 学习
wshcdr 2010-07-01
  • 打赏
  • 举报
回复
恩..............
cdsnpeter 2010-07-01
  • 打赏
  • 举报
回复
http://download.csdn.net/source/1401481

潘老师的COM原理和应用随书代码。
迷途的书童 2010-07-01
  • 打赏
  • 举报
回复
msdn 好像没有inside OLE2 相关介绍@
一名程序员 2010-07-01
  • 打赏
  • 举报
回复
看msdn中的inside OLE2。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧