看流星社区

 找回密码
 注册账号
查看: 2022|回复: 1

VS2010 使用atl com

[复制链接]

该用户从未签到

发表于 2013-2-8 10:23:17 | 显示全部楼层 |阅读模式
VC使用idl生成的文件*_i.h、*_i.c、*.dll就可以了;



atl编写:

如果一个类实现一个接口则可以直接用向导生成,如果要实现多个接口,则:

修改:

*.id添加

interface ICalEx : IUnknown { // 注意一个com只能最多一个接口实现IDispatch接口,因为那个默认生成的实现了,所以这个直接

// 继承IUnknown

};
[
uuid(1E27DC21-092A-49A1-A2E5-60FCDEA9FEF7),
version(1.0),
]



coclass Cal
{
  [default] interface ICal;
  interface ICalEx;
};

*.h类的头文件:

class ATL_NO_VTABLE CCal :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CCal, &CLSID_Cal>,
public ICalEx,
public IDispatchImpl<ICal, &IID_ICal, &LIBID_atl111Lib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{

。。。

BEGIN_COM_MAP(CCal)
COM_INTERFACE_ENTRY(ICal)
COM_INTERFACE_ENTRY(ICalEx)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()



另外:

VS类视图中,那个红色的接口添加方法时,会在编译时去除,所以不能在那添加;

要添加接口方法,应该在那个像钥匙的接口(有两个,但后面那个有vtable不能用)添加方法;

该用户从未签到

发表于 2013-9-23 13:08:44 | 显示全部楼层
有时间看看 ,(~﹃~)~zZ
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-15 01:14

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表