手机版

COM编程入门(12)

发布时间:2021-06-06   来源:未知    
字号:

COM编程入门,十分浅显易懂

// 5. 调用Save() 方法保存某个文件得快捷方式。第一个参数是

// Unicode 串。

hr = pIPF->Save ( L"C:\\wallpaper.lnk", FALSE );

// 6a. 释放IPersistFile 接口。

pIPF->Release();

}

}

// 6. 释放IShellLink 接口。

pISL->Release();

}

// 输出错误信息部分这里省略。

// 7. 收回COM 库。MFC 程序不用这一步,它自动完成。

CoUninitialize();

处理HRESULT

这一部分准备用SUCCEEDED 和 FAILED宏进行一些简单的出错处理。主要是深入研究从COM方法返回的HRESULT,以便达到完全理解和熟练应用。

HRESULT是个32位符号整数,其非负值表示成功,负值表示失败。HRESULT有三个域:程度位(表示成功或失败),功能码和状态码。功能码表 示HRESULT来自什么组件或程序。微软给不同的组件多赋予功能码,如:COM、任务调度程序等都有功能码。功能码是个16位的值,仅此而已,没有其它 内在含义;它在数字和意义之间是随意关联的;类似GetLastError()返回的值。

如果你在winerror.h头文件中查找错误代码,会看到许多按照[功能]_[程度]_[描述]命名规范列出的HRESULT值,由组件返回的通用的HRESULT(类似E_OUTOFMEMORY)在名字中没有功能码。如 :

REGDB_E_READREGDB:

功能码 = REGDB, 指“注册表数据库(registry database)”;

程度 = E 意思是错误(error);

描述 = READREGDB 是对错误的描述(意思是不能读注册表数据库)。 S_OK: 没有功能码——通用(generic)

HRESULT;

程度=S;表示成功(success);

OK 是状态描述表示一切都好(everything''s OK)。

好在有一种比察看winerror.h文件更容易的方法来确定HRESULT的意思。使用VC提供的错误查找工具(Error Lookup)可以轻松查到为HRESULT内建功能码。例如,假设你在CoCreateInstance()之前忘了调用 CoInitialize()。CoCreateInstance()返回的值是0x800401F0。你只要将这个值输入到错误查找

COM编程入门(12).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)