COM接口只有方法没有属性(实例数据),当然也不允许有,那么何来自动化接口的属性又从何谈起呢

chmseu 2003-08-19 05:00:32
自动化的属性则与C++数据成员和实例数据(也叫属性)相似,COM接口只有方法没有属性(实例数据),当然也不允许有,那么何来自动化接口的属性又从何谈起呢?
高手讲解一下!
...全文
119 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
luohualiushui 2003-08-20
  • 打赏
  • 举报
回复
这只是表面现象
这个接口只能通过invoke调用
当传给它的dispid是1,且传入DISPATCH_PROPERTYGET,调用的是get_xxx
传入DISPATCH_PROPERTYPUT,调用的是put_xxx

我只能说到这种程度了
chmseu 2003-08-20
  • 打赏
  • 举报
回复
自动化的属性指的是两个函数,get_xxx,set_xxx
在vb中,如果xxx出现在等号左边,那么调用set_xxx
如果在等号右边,调用get_xxx
这只能说明:属性也是通过方法来访问的,不能否认该实例数据的存在啊,我就是这里搞不懂,还请各位高手赐教,感激不尽,讲的我心服口服,立刻散分!
chmseu 2003-08-20
  • 打赏
  • 举报
回复
to luohualiushui(落花流水):

dispinterface ICardReader
{
properties:
//{{AFX_ODL_PROP(CCardReader)
[id(1)] short newproperty;
//}}AFX_ODL_PROP

methods:
//{{AFX_ODL_METHOD(CCardReader)
[id(2)] short Init();
[id(3)] short Reset();
[id(4)] short GetStatus();
[id(5)] short InsertCard(short sTimeout);
[id(6)] short AsyncInsertCard(short sTimeout);
以下略................
//}}AFX_ODL_METHOD
};
你说的vb何c++在使用自动化上的不同我是理解的;
但是,以上是我添加了属性newproperty的某个odl文件的部分,这很明显的表明数据来自于接口,而非对象,所以我还是不明白,请赐教,感谢!
luohualiushui 2003-08-20
  • 打赏
  • 举报
回复
数据当然是有的,是在对象中
访问这些数据就是通过get_xxx,put_xxx(更正一下)来访问的
之所以会产生这种“属性”的说法,是因为在vb和其他脚本语音的特定语法造成的
比如vb中:mol.name="cheng"
其实它是调用put_name来实现对某个对象(实现了mol接口)的数据访问
但在c++中就得直接调用了
双杯献酒 2003-08-20
  • 打赏
  • 举报
回复
Up
luohualiushui 2003-08-19
  • 打赏
  • 举报
回复
自动化的属性指的是两个函数,get_xxx,set_xxx
在vb中,如果xxx出现在等号左边,那么调用set_xxx
如果在等号右边,调用get_xxx
flyingjust 2003-08-19
  • 打赏
  • 举报
回复
去看看ActiveX方面的书吧!
WaterUsage 2003-08-19
  • 打赏
  • 举报
回复
“自动化接口的属性”
这个“属性”应该不是指数据成员,而是指接口性质的描述符,如oleautomation、dual
Analyst 2003-08-19
  • 打赏
  • 举报
回复
属性也是通过方法来访问的。

3,245

社区成员

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

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