次の方法で共有


AtlGetObjectSourceInterface

更新 : 2007 年 11 月

オブジェクトの既定のソース インターフェイスに関する情報を取得します。

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、およびメジャー バージョン番号とマイナ バージョン番号が用意されています。

xh5ywd85.alert_note(ja-jp,VS.90).gifメモ :

この関数が要求された情報を正常に取得するには、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

参照

参照

IDispEventImpl クラス

IDispEventSimpleImpl クラス

その他の技術情報

複合コントロールに関するグローバル関数