AtlGetObjectSourceInterface
调用该函数检索有关对象的默认源接口的信息。
重要事项 |
---|
此功能无法在 Windows 运行时执行的应用程序。 |
ATLAPI AtlGetObjectSourceInterface(
IUnknown* punkObj,
GUID* plibid,
IID* piid,
unsigned short* pdwMajor,
unsigned short* pdwMinor
);
参数
punkObj
[out]一个指向信息将返回的对象的指针。plibid
[out]一个指向类型包含源接口定义的库的LIBID的指针。piid
[out]一个指向对象的默认源接口的接口ID的指针。pdwMajor
[out]一个指向类型包含源接口定义的库的主版本号的指针。pdwMinor
[out]一个指向类型包含源接口定义的库的次版本号的指针。
返回值
标准HRESULT值。
备注
AtlGetObjectSourceInterface 可以提供您在默认的源接口的接口ID,与类型一起描述该接口库的LIBID和主版本号和次版本号。
说明 |
---|
若要成功地检索此功能可以请求的信息,punkObj 表示的对象必须实现 IDispatch (和通过 IDispatch::GetTypeInfo返回类型信息)和它还必须实现 IProvideClassInfo2 或 IPersist。源接口的类型信息必须在同一类型库。IDispatch的类型信息。 |
示例
在演示如何定义事件接收器选件类,CEasySink下的示例,减少模板参数的数目您可以向 IDispEventImpl 到仅有的要点。EasyAdvise 和 EasyUnadvise 使用 AtlGetObjectSourceInterface 在调用 DispEventAdvise 或 DispEventUnadvise之前初始化 IDispEventImpl 成员。
template <UINT nID, class T>
class CEasySink : public IDispEventImpl<nID, T>
{
public:
HRESULT EasyAdvise(IUnknown* pUnk)
{
AtlGetObjectSourceInterface(pUnk,
&m_libid, &m_iid, &m_wMajorVerNum, &m_wMinorVerNum);
return DispEventAdvise(pUnk, &m_iid);
}
HRESULT EasyUnadvise(IUnknown* pUnk)
{
AtlGetObjectSourceInterface(pUnk,
&m_libid, &m_iid, &m_wMajorVerNum, &m_wMinorVerNum);
return DispEventUnadvise(pUnk, &m_iid);
}
};
要求
Header: atlcom.h