次の方法で共有


AtlGetObjectSourceInterface

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

重要 : 重要

この関数は Windows ランタイムで実行されるアプリケーションで使用することはできません。

ATLAPI AtlGetObjectSourceInterface(
IUnknown* punkObj,
GUID* plibid,
IID* piid,
unsigned short* pdwMajor,
unsigned short* pdwMinor
);

パラメーター

  • punkObj
    [入力]情報が返されるオブジェクトへのポインター。

  • plibid
    [出力]ソース インターフェイスの定義を含むタイプ ライブラリの LIBID へのポインター。

  • piid
    [入力]オブジェクトの既定のソース インターフェイスのインターフェイス ID へのポインター。

  • pdwMajor
    [出力]ソース インターフェイスの定義を含むタイプ ライブラリのメジャー バージョン番号へのポインター。

  • pdwMinor
    [出力]ソース インターフェイスの定義を含むタイプ ライブラリのマイナー バージョン番号へのポインター。

戻り値

標準の HRESULT 値。

解説

AtlGetObjectSourceInterface は、そのインターフェイスを記述するタイプ ライブラリの LIBID とメジャー バージョン番号とマイナー バージョン番号とともに既定のソース インターフェイスのインターフェイス ID を、与えることができます。

[!メモ]

正常に必要な情報を取得するこの関数に対して punkObj によって表されるオブジェクトが IProvideClassInfo2IPersistを実装する必要があります IDispatch と (または型情報を IDispatch::GetTypeInfoによって返される場合) 実行する必要があります。ソース インターフェイスの型情報は IDispatchの型情報と同じタイプ ライブラリにある必要があります。

使用例

イベント シンク クラスを定義するか、それに IDispEventImpl の要素に渡すことができるテンプレート引数の数を減らすに CEasySinkを次の例に示します。EasyAdvise と EasyUnadvise は DispEventAdviseDispEventUnadviseを呼び出す前に IDispEventImpl のメンバーの初期化に AtlGetObjectSourceInterface を使用します。

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 クラス

その他の技術情報

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