オートメーション - IDispatchインターフェース

いちごパック > COM/ActiveXの解説 > オートメーション - IDispatchインターフェース

オートメーションのインターフェース

IUnknownとその実装で説明したとおり、 COMのインターフェースはすべてIUnknownを継承したインターフェースになっています。 したがって、オートメーションで利用するIDispatchインターフェースも、IUnknownを継承したインターフェースになります。
IDispatchのインターフェースは次の通りです。
class IDispatch : public IUnknown
{
public:
    HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT* pcTInfo) = 0;
    HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid,
                                          ITypeInfo** ppTInfo) = 0;
    HRESULT STDMETHODCALLTYPE GetIDsOfNames(
        REFIID riidNull, LPOLESTR* rgszNames, UINT cNames,
        LCID lcid, DISPID* rgDispId) = 0;
    HRESULT STDMETHODCALLTYPE Invoke(
        DISPID dispIdMember, REFIID riidNull, LCID lcid,
        WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult,
        EXCEPINFO* pExcepInfo, UINT* puArgErr) = 0;
IUnknownのQueryInterfaceは、IDispatchへのポインタを返せるようにしておきます。 各メソッドの機能は次の通りです。
メソッド内容
GetIDsOfNamesメソッド名をIDに変換します。
InvokeIDと引数を指定してメソッドを呼び出します。
GetTypeInfoCount(オプション)プログラミング用の補足情報であるタイプ情報の数を返します。
GetTypeInfo(オプション)プログラミング用の補足情報であるタイプ情報を返します。
タイプ情報はオプションですので別途説明することにして、今回のサンプルでは実装しないことにします。

関連ページ

  • COM/ActiveXの解説ページ 目次
  • 前の項目: クライアントの実装
  • 次の項目: メソッド呼び出しの実装