使用Delphi学COM

第一章 在Delphi中使用接口 

1.1 定义接口: 
目的:什么是接口,以及和抽象类的关联以及不同点。 
抽象类(备注理解接口最简单的方法) 
永远不能创建一个抽象类的实例; 
本身不能实现功能,依靠派生类实现; 
接口 
被申明为interface类型。接口名从字母I开始。类类型名从T开始。 
所有的接口从IUnknown继承; 
不能创建接口实例; 
不能在接口中指定范围指示。所有的方法都是公有型(public),不能在接口中申明包括范围指示; 
不能申明变量;接口只能决定提供什么样的功能,对于如何完成功能没有限制; 
接口中申明的所有函数和过程,概念上都是虚抽象函数和过程;因此申明时不能带Virtual; 
接口是不变的; 
1.2申明一个接口 
目的:如何声明一个接口 
常用的接口:CLSID、IID、和LIBID; 
GUID(Globally Unique Identifier)全球唯一标示符: CoCreateGuid产生(API); 
CLSID(Class Identifier): 代表COM对象的类别,代表COM对象的CoClass; 
IID(Interface Identifier): 代表一个COM对象的接口; 
例如:如何建立COM对象的方法; 
var 
iRoot: IUnkown; 
begin 
... 
iRoot := CreateComObject(ProgIDToClassID('Project1.Interface1')); //取得实体样例 
... 
end; 
应用程序在内存中建立了COM对象的实体样例; 
注意: CreateComObject回传的是COM对象的实体样例的IUnknown接口; 
APPID(Application Indentifier): 应用程序ID; 
CATID(Category Identifier): COM组件实现的组件类型; 
LIBID(Library Identifier): COM对象实现的Type Library代表的ID; 
ProgID: 有意义的字符串代表特定的CLSID; 
1.3 实现接口 
目的:如何实现接口 
实现IUnknown: QueryInterface、 _AddRef、 _Release 
使用TInterfaceObject来自动实现Iunknown,否则的话自己要实现上面的方法。 
创建、使用及销毁接口: create;指向接口的指针不访问任何信息;自动释放、强迫销毁一个接口将变量置为nil 
注:delphi自动创建和销毁接口。 
获取单个接口的指针: 
直接分配:类与他们实现的接口类型兼容的 
GetInterface(const IID: TGUID; out obj):判断对象是否支持一个接口 
as操作符: 对象支持特定的接口(对象不支持接口就错的话,可以拦截错误); 
as自动调用计数功能; 

1.4 高级多级接口问题 
目的:在一个类中实现多个接口 
在一个类中实现多个接口 
TXY = class(TInterfacedObject, IXX, IYY): 类TXY 实现了IXX和IYY接口的所有方法。 
多个接口不是多重继承:TXY有且只有一个基类TInterfacedObject; 
方法分辨字句:当接口方法在类中实现时,方法分辨子句可使用改变他的名称 
TXY = class(TInterfacedObject, IXX, IYY) 
procedure IXX.pxy = pxy1 
procedure IYY.pxy = pxy2 

接口授权:一个接口的实现授权给另一个类:一个类包含针对另一个类的指针。 
内部类: 实现一个或多个接口的功能性; 
外部类: 简单的将这些方法传递给内部类,而不是重新实现接口; 

接口属性:可以定义只读、只写、或者读写属性; 
但是所有访问都必须通过访问函数,因为接口不能定义存储。  
1.5 小结 
目的:如何在delphi应用程序中内部使用接口,了解delphi语言要素的接口。 
申明一个接口;  
在类中实现接口;  
实现IUnknown所需要的功能;  
自动对象析构的处理;  
在类中实现多个接口;  
将一个接口的实现授权给一个内部对象;  
定义并实现接口属性 
[第一章 接口][第二章 接口与COM][第三章 类型库][第四章 自动化][第五章 ActiveX][末尾] 
第二章 接口与COM 
2.1 GUIDs 和 COM

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值