没有合适的资源?快使用搜索试试~ 我知道了~
c++实现com
4星 · 超过85%的资源 需积分: 0 2 下载量 155 浏览量
2013-12-20
11:16:52
上传
评论 1
收藏 39KB DOCX 举报
温馨提示
试读
15页
有关c++实现com组件的案例,可做相应的修改,如有错误,请自己解决
资源推荐
资源详情
资源评论
用
c++
实现
com
组件示例
分类: VC/MFC C/C++ 2008-09-27 16:35 1010 人阅读 评论(1) 收藏 举报
c++nulldeletestringclassaccess
1、 创建一个 win32 dll 应用类型项目工程。
2、 添加 ComTest.h 及 ComTest.cpp 文件,并在 ComTest.h 头文件包含
Unknwn.h 头文件
3、 用 guid.exe 生成一个接口 IID 及 com 对象类 CLSID
代码如下:
//ComTest.h
#pragma once
#include <Unknwn.h>
EXTERN_C const CLSID CLSID_TestObject;
EXTERN_C const CLSID IID_ObjectInterface;
MIDL_INTERFACE("DE5A091A-EF80-4bd3-8AEB-CB20B879A2F1")
IObjectInterface :public IUnknown
{
virtual void __stdcall TestMethod() PURE;
};
//ComTest.cpp
#include "StdAfx.h"
#include "ComTest.h"
EXTERN_C const CLSID CLSID_TestObject =
{0xa33e547a, 0x8a95, 0x4118, {0x86, 0xa, 0x46, 0xb2, 0x3c, 0x6d, 0x40, 0xbd}};
EXTERN_C const CLSID IID_ObjectInterface =
{0xde5a091a, 0xef80, 0x4bd3, {0x8a, 0xeb, 0xcb, 0x20, 0xb8, 0x79, 0xa2, 0xf1}};
4、 添加 CTestObject 类,这个类必须实现 IObjectInterface 接口,并且必须实现
IUnkown 接口的三个函数。
代码如下
//TestObject.h
#pragma once
#include "ComTest.h"
class CTestObject:public IObjectInterface
{
public:
CTestObject(void);
public:
~CTestObject(void);
public:
HRESULT __stdcall QueryInterface( REFIID riid,void **ppvObject);
ULONG __stdcall AddRef( void);
ULONG __stdcall Release( void);
public:
void __stdcall TestMethod();
private:
int m_nRef;
};
//TestObject.cpp
#include "StdAfx.h"
#include "TestObject.h"
#include <iostream>
using namespace std;
CTestObject::CTestObject(void)
:m_nRef(0)
{
}
CTestObject::~CTestObject(void)
{
}
HRESULT CTestObject::QueryInterface( REFIID riid,void **ppvObject)
{
if (riid==__uuidof(IUnknown))
{
*ppvObject = (IUnknown*)this;
((IUnknown*)*ppvObject)->AddRef();
return S_OK;
}
else if (riid==__uuidof(IObjectInterface))
{
*ppvObject = (IObjectInterface*)this;
((IObjectInterface*)*ppvObject)->AddRef();
return S_OK;
}
else
{
*ppvObject = NULL;
return E_NOINTERFACE;
}
}
ULONG CTestObject::AddRef( void)
{
m_nRef++;
return m_nRef;
}
ULONG CTestObject::Release( void)
{
m_nRef--;
if (m_nRef==0)
{
delete this;
}
return m_nRef;
}
void CTestObject::TestMethod()
{
cout<<"this is my com test!"<<endl;
}
剩余14页未读,继续阅读
资源评论
- zlliuyou9517532015-04-02注解稍微少了些。不过有参考价值
xinghailian
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功