1、我用VC ATL工程的向导做了一个测试组件,这个组件除了必要的接口以外就只有我自己定义的一个接口了。并且我再加ATL Oject的时候,选择了支持ISupportErrorinfo接口,这样呢向导帮我加了有关ISupportErrorinfo接口的必要定义和实现。
2、然后我就开始实现我自己的接口,只加进了一个方法。这个方法实现过程中如果出现了我不希望的东东,我就先产生一个详细的描述
Error(错误描述,GUID_NULL,错误代码),然后呢用MAKE_HRESULT(,,错误代码)返回了一个HRESULT值,当然这个值的最高位位0,也就是表示错误。
3、编译、注册OK
4、按理在客户端利用智能接口调用我的接口后,如果返回了错误的HRESULT,首先应该利用这个接口找到ISupportErrorinfo接口(找不到就拉到:)),然后用ISupportErrorinfo接口去验证你那个接口是否支持详细异常描述的机制(我这个当然支持)。如果支持呢,就用你找的ISupportErrorinfo接口再去找IErrorInfo接口,最后利用IErrorInfo获得有关异常的详细描述。(各位大哥、大姐上面的对吗?)
5、我按照上面的做了,找到了ISupportErrorinfo接口,我的组件实现的那个自定义接口也支持ISupportErrorinfo接口,可是再用ISupportErrorinfo接口找IErrorInfo
接口的时候总是找不到,而查找的资料中却说ATL自己实现了IErrorInfo接口,用ISupportErrorinfo查找总是可以找到?我错在哪里了呢?
2、然后我就开始实现我自己的接口,只加进了一个方法。这个方法实现过程中如果出现了我不希望的东东,我就先产生一个详细的描述
Error(错误描述,GUID_NULL,错误代码),然后呢用MAKE_HRESULT(,,错误代码)返回了一个HRESULT值,当然这个值的最高位位0,也就是表示错误。
3、编译、注册OK
4、按理在客户端利用智能接口调用我的接口后,如果返回了错误的HRESULT,首先应该利用这个接口找到ISupportErrorinfo接口(找不到就拉到:)),然后用ISupportErrorinfo接口去验证你那个接口是否支持详细异常描述的机制(我这个当然支持)。如果支持呢,就用你找的ISupportErrorinfo接口再去找IErrorInfo接口,最后利用IErrorInfo获得有关异常的详细描述。(各位大哥、大姐上面的对吗?)
5、我按照上面的做了,找到了ISupportErrorinfo接口,我的组件实现的那个自定义接口也支持ISupportErrorinfo接口,可是再用ISupportErrorinfo接口找IErrorInfo
接口的时候总是找不到,而查找的资料中却说ATL自己实现了IErrorInfo接口,用ISupportErrorinfo查找总是可以找到?我错在哪里了呢?
解决方案 »
- 声明状态栏对象、程序不运行
- 如何通过程序控制IE?
- 抢分的赶快哦 关于删除指定目录下的指定文件的函数(分数不高 但问题一解决立即结账)
- 帮我看一下,怎么会这样!
- 有谁知道有没有办法暂停一个线程的运行?
- 请教一下在MDI的程序中pmyView->GetParent()->GetParent()->..... 都得到了什么??
- 请问怎么让程序自己启动多个实例?能相互通信吗?能共享数据吗?
- 高分求解一个比较简单的问题,如何实现远程关机功能?本想送上300分,可系统只让送110分,只有不断往上加了。
- 如何创建一个浮动而不带系统标题栏的工具条!(内容无)
- 多线程问题!
- 方向问题
- 如何在工具栏添加一个Edit框?
try{
.....
}catch(..)
{
query the IErrorInfo here!
}