AtlGetObjectSourceInterface
呼叫這個函式會擷取與物件相關的預設來源介面的相關資訊。
重要
這個函式不能用於 Windows 執行階段執行的應用程式。
ATLAPI AtlGetObjectSourceInterface(
IUnknown* punkObj,
GUID* plibid,
IID* piid,
unsigned short* pdwMajor,
unsigned short* pdwMinor
);
參數
punkObj
[out] 資訊要傳回之物件的指標。plibid
[out] 型別包含來源介面的定義的程式庫的 GUID 的指標。piid
[out] 物件的預設來源介面的介面 ID 的指標。pdwMajor
[out] 型別包含來源介面中定義的型別程式庫的主要版本號碼的指標。pdwMinor
[out] 型別包含來源介面中定義的型別程式庫的次要版本號碼的指標。
傳回值
標準的 HRESULT 值。
備註
AtlGetObjectSourceInterface 可為您提供預設來源介面的介面 ID,與型別一起描述該介面的型別程式庫的 LIBID 和主要和次要版本號碼。
注意事項 |
---|
對於成功擷取型別的函式可以要求的詳細資訊, punkObj 表示的物件必須實作 IDispatch (和傳回型別資訊傳遞 IDispatch::GetTypeInfo) 加上它也必須實作 IProvideClassInfo2 或 IPersist。來源介面的型別資訊都必須在相同型別程式庫與 IDispatch的型別資訊。 |
範例
說明如何定義一個事件接收類別, CEasySink之下的範例,減少樣板引數數目可以傳遞至 IDispEventImpl 至單純的基本資訊。 EasyAdvise 和 EasyUnadvise 使用 AtlGetObjectSourceInterface 在呼叫或之前 DispEventAdviseDispEventUnadvise初始化 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