如何获得接口定义的类型库内接口的属性,返回HRESULT但希望它返回实际值的财产。COM - 如何获取接口定义的类型库中接口的属性
编辑:
IDL:
interface IMyClassInterface : IDispatch
{
[propget, id(1), helpstring("Gets user Type")] HRESULT getUserDefineTypeVal([out,retval] UserDefineEnum *ptrVal);
[propput, id(1), helpstring("Sets user Type ")]HRESULT setUserDefineTypeVal([in] UserDefineEnum newVal);
}
物业在头文件:
STDMETHOD(getUserDefineTypeVal)(UserDefineEnum *ptrVal);
STDMETHOD(setUserDefineTypeVal)(UserDefineEnum newVal);
物业在MYClass.cpp:
STDMETHODIMP CMYClass::getUserDefineTypeVal(UserDefineEnum *ptrVal) {
*ptrVal = UserDefineEnum(private_var_UserDefineTypeVal);
return S_OK;
}
AnotherClass within the Type Library:
IMyClassInterface* private_var_MyClass
STDMETHODIMP CAnotherClass::someMethod(){
UserDefineEnum* p;
if(private_var_MyClass->getUserDefineTypeVal(p)){
//do somestuff
}
}
的问题是如果条件不会返回true 。但下面的部分工作。
HRESULT hr = private_var_MyClass->getUserDefineTypeVal(p);
if(hr == S_OK){ do somestuff }
这样做的问题是,如果我试图case语句在HR唯一的值是0,我需要检查在客户方所设置的值。
你能否提供一些你认为应该工作的代码? – sharptooth 2010-02-01 15:17:01
添加的代码,请检查 – 2010-02-01 16:20:46