v
- イベントが発生したときに呼び出される既定のメソッドを持つオブジェクトの IDispatch インターフェイスを指定する VT_DISPATCH 型の VARIANT。
このコンテキストでのイベント ハンドラーは、実装する COM インスタンスであるため、イベント ハンドラー オブジェクトが実装するIDispatch
へのポインターを渡す必要があります。IDispatch
CComQIPtr<IDispatch> spDisp(spMyHandler); // something like that
someElement->put_onmousedown(CComVariant(spDisp));
注: -put_
の代わりにget_
、 handler を登録します。
これで、次のようIDispatch::Invoke()
に呼び出されます:
wFlags
含むDISPATCH_METHOD
( 「メソッドが呼び出されています」 )
dispIdMember
0
/ DISPID_VALUE
( 「デフォルトの方法」 )であること
これをまとめると、次のようになります。
HRESULT MyHandler::Invoke(DISPID dispIdMember, REFIID, LCID, WORD wFlags,
DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*)
{
// ...
if((wFlags & DISPATCH_METHOD) && (dispIdMember == DISPID_VALUE))
{
// ...
}
}