首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

建立ATL容易对象选择了"支持兼容自动化"函数一定要有[id(x)]属性吗

2013-09-11 
建立ATL简单对象选择了支持兼容自动化,函数一定要有[id(x)]属性吗?我建立ATL简单对象,选择了兼容自动化

建立ATL简单对象选择了"支持兼容自动化",函数一定要有[id(x)]属性吗?
我建立ATL简单对象,选择了兼容自动化的选项,然后生成的接口声明就像下面这样子:


[
object,
uuid(6DC0B722-99B0-4F9A-916B-B035A0E75B01),
oleautomation,
nonextensible,
pointer_default(unique)
]
interface IBar : IUnknown{
[id(1)] HRESULT Add([in] LONG n1, [in] LONG n2, [out,retval] LONG* pVal);
};

看起来只有支持了自动化的才有id属性,我知道自动化是根据函数编号进行invoke的对吧?
但是我发现把IBar::Add函数的[id(1)]去掉也能编译通过。或者改成[id(30)]这样也能编译通过。

问题:
(1)为什么支持自动化,可以把[id(x)]属性去掉看起来也没事呢?
(2)id属性如果不是从1开始,会怎么样呢?

还请高手指点! 谢谢!

[解决办法]
去掉以后,用vb调用一下看行不行

热点排行