AtlGetObjectSourceInterface
オブジェクトの既定のソース インターフェイスに関する情報を取得します。
ATLAPI AtlGetObjectSourceInterface(
IUnknown* punkObj,
GUID* plibid,
IID* piid,
unsigned short* pdwMajor,
unsigned short* pdwMinor
);
パラメーター
punkObj
[入力] 情報が返されるオブジェクトへのポインター。plibid
[出力] ソース インターフェイスの定義を含むタイプ ライブラリの LIBID へのポインター。piid
[出力] オブジェクトの既定のソース インターフェイスのインターフェイス ID へのポインター。pdwMajor
[出力] ソース インターフェイスの定義を含むタイプ ライブラリのメジャー バージョン番号へのポインター。pdwMinor
[出力] ソース インターフェイスの定義を含むタイプ ライブラリのマイナー バージョン番号へのポインター。
戻り値
標準の HRESULT 値を返します。
解説
AtlGetObjectSourceInterface には、既定のソース インターフェイスのインターフェイス ID と共に、このインターフェイスを記述するタイプ ライブラリの LIBID、およびメジャー バージョン番号とマイナー バージョン番号が用意されています。
注意
この関数が要求された情報を正常に取得するには、punkObj によって表されたオブジェクトが IDispatch を実装している (および IDispatch::GetTypeInfo を使用して型情報を返す) 必要があり、さらに IProvideClassInfo2 または IPersist のいずれかを実装している必要があります。 ソース インターフェイスの型情報は、IDispatch の型情報と同じタイプ ライブラリ内にある必要があります。
使用例
以下の例は、IDispEventImpl に対して渡すことができるテンプレート引数の数を最小限に減らすイベント シンク クラス CEasySink を定義する方法を示しています。 EasyAdvise および EasyUnadvise は、DispEventAdvise または DispEventUnadvise を呼び出す前に、AtlGetObjectSourceInterface を使用して 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);
}
};
必要条件
**ヘッダー:**atlcom.h