Grabber::isListenerRegistered Method
特定のイベント用に指定のコールバックハンドラが登録されているかどうかをチェックします。
構文
bool isListenerRegistered( GrabberListener* pListener, DWORD callback = -1 );
パラメータ | 説明 |
---|---|
pListener | チェックするGrabberListenerクラスライブラリリファレンス>クラス>GrabberListenerコー ルバックハンドラへのポインタを指定します。 |
callback | チェックするイベントの指定を行います。それがGrabberListener::tListenerTypeクラスライブラリリファレンス>クラス>GrabberListener>GrabberListener::tListenerTypeのコンビネーションである場合もあります。2つ以上のlistner typeを結合させるには、OR演算子を使用してください。デフォルトでは-1となっており、利用可能な全GrabberListener::tListenerTypeクラスライブラリリファレンス>クラス>GrabberListener>GrabberListener::tListenerTypeのコンビネーションを表します。 |
戻り値
コールバックが特定のイベント用に登録されている場合はtrue、そうでない場合はfalse。
サンプル
ここではGrabberListenerクラスライブラリリファレンス>クラス>GrabberListenerより継承する、イベント用のコールバックハンドラの登録とその取り消し方法を紹介します。
Grabber *grabber = new DShowLib::Grabber();
CListener *pcListener = new CListener(); // GrabberListenerオブジェクトの作成
// CListenerはGrabberListenerより継承
// pcListenerオブジェクトをGrabberのGrabberListener オブジェクトリストへ登録
grabber->addListener( pcListener, DShowLib::GrabberListener::eFRAMEREADY|
DShowLib::GrabberListener::eOVERLAYCALLBACK );
grabber->startLive( true ); // ライブモードの開始
// イベントのハンドリング
fflush(stdin);
printf("Press [enter] to stop!");
getchar();
// GrabberListenerオブジェクトは削除する前に登録を取り消す必要があるため
// 最初にframereadyイベント用の登録を取り消す
grabber->removeListener(pcListener, DShowLib::GrabberListener::eFRAMEREADY);
// 次にoverlaycallbackイベント用の登録を取り消す
grabber->removeListener(pcListener, DShowLib::GrabberListener::eOVERLAYCALLBACK);
// 全ての登録取り消し要求が処理されるまで待機
while( grabber->isListenerRegistered( pcListener, eALL) )
{
Sleep( 0 ); // 待機する
}
// これでCListenerメソッドがGrabberにコールされる心配がなくなった為、
// 安全にCListenerを削除することができます。
delete pcListener;
grabber->stopLive(); // ライブモードの停止
delete grabber;
関連項目
Grabberクラスライブラリリファレンス>クラス>Grabber, Grabber::addListenerクラスライブラリリファレンス>クラス>Grabber>Grabber::addListener Method, Grabber::removeListenerクラスライブラリリファレンス>クラス>Grabber>Grabber::removeListener Method, Grabber::isListenerRegisteredクラスライブラリリファレンス>クラス>Grabber>Grabber::isListenerRegistered Method, GrabberListenerクラスライブラリリファレンス>クラス>GrabberListener, GrabberListener::tListenerTypeクラスライブラリリファレンス>クラス>GrabberListener>GrabberListener::tListenerType