Microsoft DirectX 8.0

IMediaEventEx インターフェイス

このインターフェイスは、イベント通知を取得するメソッドと、フィルタ グラフのデフォルトのイベント処理をオーバーライドするメソッドを提供する IMediaEvent インターフェイスを継承する。IMediaEventEx には、イベント発生時にアプリケーション ウィンドウでメッセージを受け取るためのメソッドが加わっている。このインターフェイスは、IMediaEvent と異なり、Automation を通じて利用できない。したがって、Microsoft® Visual Basic® から直接呼び出すこともできない。

フィルタ グラフ マネージャがこのインターフェイスを実装する。

イベント通知の詳細については、「DirectShow でのイベント通知」を参照すること。システム定義のイベント通知の一覧については、「イベント通知コード」を参照すること。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterface サポートされているインターフェイスへのポインタを取得する。
AddRef 参照カウントをインクリメントする。
Release 参照カウントをデクリメントする。
IDispatch メソッド説明
GetTypeInfoCount このディスプインターフェイスに利用可能なタイプ情報があるかどうか判断する。
GetTypeInfo GetTypeInfoCount が成功した場合は、このディスプインターフェイスのタイプ情報を取得する。
GetIDsOfNames (引数を含む) プロパティおよびメソッドのテキスト名を対応する DISPID に変換する。
Invoke DISPID およびその他の必要なパラメータが指定された場合は、このディスプインターフェイスのメソッドを呼び出すか、またはプロパティにアクセスする。
IMediaEvent メソッド説明
GetEventHandle キューにイベント通知が入っている間に通知済状態の自動リセット イベントのハンドルを取得する。
GetEvent イベント キューから次の通知イベントを取得する。
WaitForCompletion フィルタ グラフがすべての有効なデータをレンダリングするまで待機する。
CancelDefaultHandling フィルタ グラフによる指定されたイベントのフィルタ グラフ マネージャのデフォルト処理をキャンセルする。
RestoreDefaultHandling フィルタ グラフによる指定されたイベントのフィルタ グラフ マネージャのデフォルト処理をリストアする。
FreeEventParams イベントのパラメータに関連付けられたリソースを解放する。
IMediaEventEx メソッド説明
SetNotifyWindow イベント通知を処理するウィンドウを登録する。
SetNotifyFlags イベント通知を利用可あるいは不可にする。
GetNotifyFlags イベント通知の利用可あるいは不可を確認する。

IMediaEventEx::GetNotifyFlags

IMediaEventEx インターフェイス

イベント通知の利用可あるいは不可を確認する。

構文

HRESULT GetNotifyFlags(
    long *lplNoNotifyFlags
); 

パラメータ

lplNoNotifyFlags
[out] イベント通知のオン/オフを示す値へのポインタ。
  • ゼロ: イベント通知は利用可能。
  • AM_MEDIAEVENT_NONOTIFY: イベント通知は利用不可。

戻り値

成功した場合は、S_OK を返す。lplNoNotifyFlags パラメータが NULL の場合は、E_POINTER を返す。

注意

デフォルトでは、フィルタ グラフ マネージャはアプリケーションにイベント通知を送る。イベント通知を利用不可にするには、SetNotifyFlags に AM_MEDIAEVENT_NONOTIFY を引数として呼び出す。

イベント通知が利用不可なら、各ストリームが終ると GetEventHandle メソッドから返るハンドルが通知済になる、すなわちフィルタ グラフ マネージャが EC_COMPLETE イベントを受け取るたびに通知済になる。

IMediaEventEx::SetNotifyFlags

IMediaEventEx インターフェイス

イベント通知を利用可あるいは不可にする。

構文

HRESULT SetNotifyFlags(
    long lNoNotifyFlags
); 

パラメータ

lNoNotifyFlags
[in] イベント通知を利用可にするか不可にするかを示す値。以下の値の 1 つでなければならない :
  • ゼロ : イベント通知を利用可能にする。
  • AM_MEDIAEVENT_NONOTIFY: イベント通知を利用不可にする。

戻り値

成功した場合は、S_OK を返す。lNoNotifyFlags パラメータが無効な場合は、E_INVALIDARG を返す。

注意

デフォルトでは、フィルタ グラフ マネージャはアプリケーションにイベント通知を送る。イベント通知を利用不可にするには、SetNotifyFlags メソッドを AM_MEDIAEVENT_NONOTIFY フラグで呼び出す。

イベント通知が利用不可なら、各ストリームが終ると GetEventHandle メソッドから返るハンドルが通知済になる、すなわちフィルタ グラフ マネージャが EC_COMPLETE イベントを受け取るたびに通知済になる。

IMediaEventEx::SetNotifyWindow

IMediaEventEx インターフェイス

イベント通知を処理するウィンドウを登録する。

構文

HRESULT SetNotifyWindow(
    OAHWND hwnd,
    long lMsg,
    long lInstanceData
);

パラメータ

hwnd
[in] 通知するウィンドウのハンドル、あるいは通知を停止するには NULL を渡す。
lMsg
[in] 通知として渡すウィンドウ メッセージ。
lInstanceData
[in] lMsg メッセージの lParam パラメータとして渡す値 。

戻り値

成功した場合は、S_OK を返す。hwnd パラメータが有効なウィンドウ ハンドルでない場合は、E_INVALIDARG を返す。

注意

このメソッドはイベント通知を処理するウィンドウを指示する。フィルタ グラフ マネージャがイベントをイベント キューに入れるたびに、指定したウィンドウにメッセージも送る。hwnd パラメータはウィンドウを指定し、lMsg パラメータはメッセージを指定する。アプリケーションはプライベート ウィンドウ メッセージをこのために定義すべきである。メッセージの lParam パラメータには lInstanceData の値がセットされ、wParam パラメータはゼロにセットされる。

ウィンドウがメッセージを受け取ったら、GetEvent メソッドを呼び出してイベントを取得すべきだ。イベントは非同期なので、キューには複数の(あるいはゼロの)イベントが入っている可能性がある。GetEvent がエラーコードを返すまで繰り返し呼び出すこと。