Xaudio2をC++/CXでevent通知

Xaudio2をC++/CXで作成のところに少々追加です。
現在の状態だと音の終了などが外部からはわからない状態です。
これを防ぐために下記のような形にします。


// イベントのデリゲート
public delegate void SoundEndedHandler(int index);

public ref class xaudiolib sealed
{
   public:
      // 追加
      event SoundEndedHandler^ OnSoundEndedHandler;
      void RaiseEndEvent(int soundIndex);
}

void xaudiolib::RaiseEndEvent(int soundIndex)
{
      OnSoundEndedHandler(soundIndex);
}

class AudioFilePlayerCallBack : public IXAudio2VoiceCallback
{
    public:
      AudioFilePlayerCallBack(xaudiolib^ parent, Microsoft::WRL::ComPtr<IXAudio2> pXAudio2, Platform::String^ filename ,int soundIndex);

   private:
	xaudiolib^ parentRef;
}

CallBackの中で「parentRef->RaiseEndEvent(index);」をコールする形でイベントを呼び出せます。
直接は呼べないので、関数を経由する形で実装すれば呼び出せます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください