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;