オートメーションのインターフェース
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に変換します。 |
Invoke | IDと引数を指定してメソッドを呼び出します。 |
GetTypeInfoCount | (オプション)プログラミング用の補足情報であるタイプ情報の数を返します。 |
GetTypeInfo | (オプション)プログラミング用の補足情報であるタイプ情報を返します。 |
タイプ情報はオプションですので別途説明することにして、今回のサンプルでは実装しないことにします。
関連ページ
COM/ActiveXの解説ページ 目次
前の項目: クライアントの実装
次の項目: メソッド呼び出しの実装