COM杂项

复合文件,俗称“文件中的文件系统”。

复合文件的特点:
1.复合文件的中的“流对象”,是真正保存数据的空间。它的存储单位为512字节。也就是说,即使你在流中只保存了一个字

节的数据,它也要占据512字节的文件空间。啊~~~,这也太浪费了呀?不浪费!因为文件保存在磁盘上,即使一个字节也还

要占用一个“簇”的那空。
2.不同的进程,或同一个进程的不同线程可以同时访问一个复合文件的不同部分而互不干扰。

VC6.0附带了一个工具软件“复合文件浏览器”DFView.exe

复合文件的函数和磁盘目录文件的操作非常类似。所有这些函数,被分为3种类型:WIN API全局函数,存储IStorage接口函

数,流IStream接口函数。
typedef struct _GUID
{
	DWORD	Data1;
	WORD	Data2;
	WORD	Data3;
	BYTE	Data4[8];
};
typedef GUID CLSID;
typedef GUID IID;

常用函数:
CLSIDFromProgID
CLSIDFromProgIDEx
ProgIDFromCLSID
IsEqualGuid IsEqualCLSID IsEqualIID
StringFromCLSID StringFromGUID2 StringFromIID

COM组件是运行在分布式环境中的。通俗地说,你不能直接把一个内存指针直接作为参数传递给COM函数。

BSTR相关函数:
SysAllocString
SysFreeString
SysAllocStringLen
SysAllocStringByteLen
各种ATL转换宏,如A2BSTR OL32A A2W等等等
使用转换宏之前,需要先添加USES_CONVERSION宏
使用ATL转换宏,需要注意以下几点:
0.使用ATL转换宏,由于不用释放临时空间,所以使用起来非常方便。但是需要考虑到栈空间的尺寸。
1.只适合于进行短字符串的转换。
2.不要试图在一个次数比较多的循环体内进行转换

CComVariant v1(100), v2(true), v3("Hello,你好")

IDL经过编译,生成二进制的等价类型库文件TLB提供给其它语言来使用。

自动化组件,其实就是实现了IDispatch接口的组件。IDispatch接口有4个函数,解释语言的执行器就通过这仅有的4个函数来

执行组件所提供的功能。
GetTypeInfoCount
GetTypeInfo
GetIDsOfNames
Invoke

IConnectionPointContainer包含EnumConnectionPoints, FindConnectionPoint
IConnectionPoint包含Advise, Unadvise, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值