1. HRESULT 返回值有哪些、及其含义:
S_OK 操作成功 0x00000000S_FALSE 函数调用成功 #define S_FALSE ((HRESULT)1L)E_UNEXPECTED 意外的失败 0x8000FFFFE_NOTIMPL 未实现 0x80004001E_OUTOFMEMORY 未能分配所需的内存 0x8007000EE_INVALIDARG 一个或多个参数无效 0x80070057E_NOINTERFACE 不支持此接口 0x80004002E_POINTER 无效指针 0x80004003E_HANDLE 无效句柄 0x80070006E_ABORT 操作已中止 0x80004004E_FAIL 未指定的失败 0x80004005E_ACCESSDENIED 一般的访问被拒绝错误 0x80070005
2.HRESULT使用方法:
其中最常用的是S_OK,S_FALSE,E_FAIL.S_OK 操作成功,调用成功。需要用SUCCEEDED(hr) 来判断。#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)S_FALSE 函数调用成功,可以处理有问题。需要用(hr == S_FALSE)来判断E_FAIL 未指定的失败,一般来讲是函数调用错误。需要用(hr == E_FAIL) 来判断。从以上分析可以看出,FAILED 泛指一切错误。#define FAILED(hr) (((HRESULT)(hr)) < 0)
URLDownloadToFile() 直接下载文件
HRESULT
URLDownloadToFile(
LPUNKNOWN pCaller, // 控件的接口,如果不是控件则为0.
LPCTSTR
szURL, //要下载的url地址,不能为空
LPCTSTR
szFileName, //下载后保存的文件名.
DWORD
dwReserved, //保留字段,必需为0
LPBINDSTATUSCALLBACK lpfnCB ////下载进度状态回调
);
HRESULT ret=URLDownloadToFile(NULL,"http://img1.2345.com/duoteimg/softImg/soft/7/1331706305_41.jpg","123.jpg",0,NULL);
HRESULT ret=URLDownloadToFile(NULL,"http://a2.att.hudong.com/14/31/01000000000000119093157443914.jpg","111.jpg",0,NULL);
if (S_OK ==ret)//下载url函数
MessageBox(_T("Success DownLoad"));
else
MessageBox(_T(" UnSuccess"));
}