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查找总是可以找到?我错在哪里了呢?