com中IDL文件的简单说明

1 import "oaidl.idl";
2 import "ocidl.idl";
3	[
4		object,
5		uuid(072EA6CA-7D08-4E7E-B2B7-B2FB0B875595),
	
6		helpstring("IMathe Interface"),
7		pointer_default(unique)
8	]
9	interface IMathe : IUnknown
10	{
11		[helpstring("method Add")] HRESULT Add([in] long n1, [in] long n2, [out,retval] long *pnVal);
12	};

13 [
14	uuid(CD7672F7-C0B4-4090-A2F8-234C0062F42C),
15	version(1.0),
16	helpstring("Simple3 1.0 Type Library")
17 ]
18 library SIMPLE3Lib
19 {
20	importlib("stdole32.tlb");
21	importlib("stdole2.tlb");

22	[
23		uuid(C6F241E2-43F6-4449-A024-B7340553221E),
24		helpstring("Mathe Class")
25	]
26	coclass Mathe
27	{
28		[default] interface IMathe;
29	};
30 };

1-2	引入 IUnknown 和ATL已经定义的其它接口描述文件。import 类似与 C 语言中的 #include
3-12	一个接口的完整描述
4	object 表示本块描述的是一个接口。IDL文件是借用了PRC远程数据交换格式的说明方法
5	uuid(......) 接口的 IID,这个值是 ATL 自动生成的,可以手工修改或用 guidgen.exe 产生(注3)
6	在某些软件或工具中,能看到这个提示
7	定义接口函数中参数所使用指针的默认属性(注4)
9	接口叫 IMathe 派生自 IUnknown,于是 IMathe 接口的头三个函数一定就是QueryInterface,AddRef和Release
10-12	接口函数列表
13-30	类型库的完整描述(类型库的概念以后再说),下面所说明的行,是需要先了解的
18	#import 时候的默认命名空间
23	组件的 CLSID,CoCreateInstance()的第一个参数就是它
27-29	接口列表
28	[default]表示谁提供了IUnknown接口



你可能感兴趣的:(com中IDL文件的简单说明)