类型库(五):困难的方法:CreateTypeLib

  在这里我们感兴趣的是CreateTypeLib这个API函数,下面说明了这个函数的参数。
参数
说明
Syskind
一个SYSKIND枚举类型的值,描述目标操作系统,如SYS_WIN16,SYS_WIN32或者SYS_MAC
szFile
OLECHAR *类型,他提供了储存类型库数据结构的磁盘文件的名称。类型库文件习惯上使用TLB作为扩展名。
ppCTLib
IcreateTypeLib *类型,在这里,函数返回代表一个新类型库的接口指针。
CreateTypeLib并不用一个顶层的数据结构去初始化这个文件,这个文件可能是空的。在这里,你应该像前面提到的孩子的诗一样,一片空地,你有了一个建造房子的场所---类型库信息----但是现在仍然是只有石头、野草和泥巴。
在那片空地上建造一些东西,是ICreateTypeLib指针的目的,即你从CreateTypeLib函数返回的那个指针。表3-3描述了这个接口的成员函数,我们会先主要看一看如何设置库的属性,即建造房子的外壳。你从任何对象中获得的任何接口指针,在创建完类型库后,都就调用Release。
成员函数
描述
SetName
为类型库的Name,GUID,版本,地域,标志赋值。
SetGuid
SetVersion
SetLcid
SetLibFlags
SetDocString
为类型库帮助相关的信息赋值。
SetHelpFileName
SetHelpContext
SaveAllChanges
提交所有对类型库施加的改变(包括内部的所有元素)到磁盘文件。如果在调用Release之前没有调用本函数,所有的改变将丢失。
CreateTypeInfo
在类型库中创建一个元素,返回一个IcreateTypeInfo指针,我们通过他构建元素。
表3-3:IcreateTypeLib接口的成员函数
在这个接口中有两个函数与设置属性无关-----CreateTypeIf和SaveAllChanges,他们是最重要的。在调用SaveAllChanges之前你对库做的一切工作,等同于画一个设计蓝图和计划好一切的在房子中存在的事物,但是房子仅存在于纸上。调用SaveAllChanges相当于把这些计划给一个建筑者,他们会真正创建这些东西。在类型库的情况下,它意味着把一切东西写入磁盘。
你使用IcreateTypeLIb::CreateTypeInfo创建coclass,interface,dispinterface,module或typedef(struct,union,enum)等库中的元素。元素的类型用一个TYPEKIND类型的枚举值标识,它可以是TKIND_ALIAS(一个简单的typedef命名一个新的类型),TKIND_COCLASS,TKIND_DISPATCH(调度接口),TKIND_ENUM(枚举),TKIND_INTERFACE,TKIND_MODULE,TKIND_RECORD(结构体)和TKIND_UNION(联合)。这个函数需要这个类型标识符,和新元素的名字属性。然后CreateTypeInfo返回IcreateTypeInfo的指针。
表3-4描述了允许你创建房子的房间,墙,老鼠洞的IcreateTypeInfo接口的成员函数。
成员函数
描述
SetGuid,SetVersion
给元素的GUID或者Version赋值
SetDocString
给元素的帮助相关的属性赋值
SetHelpContext
SetTypeDescAlias
给一个类型创建别名(一个简单的typedef)
SetAlignment
详细指出一个数据结构的字节对齐
DefineFuncAsDllEntry
定义一个输出的DLL函数,通过函数名或序号。仅适用于模块元素。
SetTypeFlags
为coclass元素设置附加的标志位,如coclass是否需要证书,可直接的或受限的被浏览。
AddImplType
创建在一个coclass元素中的接口的信息。AddImplType添加接口的描述;SetImplTypeFlags为那些接口的default,source和restricted属性赋值。他们都需要从AddRefTypeInfo返回的信息。
SetImplTypeFlags
AddRefTypeInfo
 
AddFuncDesc
 
SetFuncAndParamNames
 
SetFuncDocString
 
SetFuncHelpContext
 
AddVarDesc,SetVarName
 
SetVarDocString
 
SetVarHelpContext
 
SetTypeIdIDesc,SetMops
 
layOut
 
SetSchema
保留
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值