イベント (WaveOut コントロール)

OnBusyFlagChange イベント

IsBusy プロパティの値が変化したときに発生します。

構文

Private Sub object_OnBusyFlagChange ([index As Integer])

OnBusyFlagChange イベントの構文の指定項目は次のとおりです。

指定項目内容
objectWaveOut コントロールを指すオブジェクト式です。
indexobject がコントロール配列の場合に、配列内の個々のコントロールを指す整数値です。

解説

再生を開始したとき、および再生を終了したときにこのイベントが発生します。再生中かどうかは、IsBusy プロパティの値で調べることができます。

通常、再生が終了したときには、Close メソッドを呼び出してデバイスを解放します。

OnClose イベント

ウェーブ出力デバイスが閉じたときに発生します。

構文

Private Sub object_OnClose ([index As Integer])

OnClose イベントの構文の指定項目は次のとおりです。

指定項目内容
objectWaveOut コントロールを指すオブジェクト式です。
indexobject がコントロール配列の場合に、配列内の個々のコントロールを指す整数値です。

解説

Close メソッドを呼び出し、デバイスが閉じられると発生します。

このイベントが発生した後は、再度 Open メソッドを呼び出さない限り、AddBuffer メソッドなど、デバイスが開いているときにしか利用できないメソッドを呼び出すことはできません。

Form_Terminate イベント プロシージャ、Form_Unload イベント プロシージャ、および Form_QueryUnload イベント プロシージャ内でデバイスを閉じた場合には、OnClose イベントは発生しません。

OnDone イベント

再生バッファがデバイスから解放されたときに発生します。

構文

Private Sub object_OnDone ([index As Integer,]ByVal BufferIndex As Integer, ByVal bStopped As Boolean)

OnDone イベントの構文の指定項目は次のとおりです。

指定項目内容
objectWaveOut コントロールを指すオブジェクト式です。
indexobject がコントロール配列の場合に、配列内の個々のコントロールを指す整数値です。
BufferIndex解放されたバッファのインデックスです。
bStoppedバッファが解放された理由を示すフラグです。詳しくは、次の「戻り値」を参照してください。

戻り値

bStopped に設定される値は次のとおりです。

設定値内容
TrueStop メソッドの呼び出しにより、バッファが強制的に解放されました。
Falseバッファ内のデータを再生し終わったため、バッファが解放されました。

解説

AddBuffer メソッドによって追加されたバッファがデバイスから解放されると、このイベントが発生します。どのバッファが解放されたかは、BufferIndex によって示されます。BufferIndex によって示されるバッファはデバイスからすでに解放されているので、SetData メソッドにより新しいデータをバッファにコピーし、再度 AddBuffer メソッドによってデバイスに追加することができます。こうすることにより、再生を継続することができます。

bStopped は、バッファが解放された理由を表します。bStopped の値が偽 (False) の場合は、単純にバッファ内のデータを再生し終わったためにバッファが解放されたことを示します。bStopped の値が真 (True) の場合は、Stop メソッドの呼び出しにより、デバイス内にあるバッファ (処理待ちのバッファも含む) が強制的に解放されたことを示します。

OnDone イベント内で AddBuffer メソッドを呼び出す場合は、bStopped の値が偽 (False) であることを必ず確認してください。bStopped の値が真 (True) の場合に AddBuffer メソッドを呼び出すと、Stop メソッドを呼び出しても再生を停止できなくなります。

VB
Private Sub WaveOut_OnDone(ByVal BufferIndex As Integer, ByVal bStopped As Boolean)
    Dim Buffer(1023) As Byte

    ' Stop メソッドが呼び出されていないかを調べます。
    If (bStopped = False) Then
        ' ここで、Buffer 上にサウンド データを生成します。
        ' ...

        ' バッファにサウンド データをコピーします。
        WaveOut.SetData Buffer, BufferIndex, UBound(Buffer) + 1

        ' 再生用のバッファを追加します。
        WaveOut.AddBuffer BufferIndex, UBound(Buffer) + 1
    End If
End Sub

OnOpen イベント

ウェーブ出力デバイスが開いたときに発生します。

構文

Private Sub object_OnOpen ([index As Integer])

OnOpen イベントの構文の指定項目は次のとおりです。

指定項目内容
objectWaveOut コントロールを指すオブジェクト式です。
indexobject がコントロール配列の場合に、配列内の個々のコントロールを指す整数値です。

解説

Open メソッドの呼び出しによりデバイスが開かれると、このイベントが発生します。

OnPausedFlagChange イベント

IsPaused プロパティの値が変化したときに発生します。

構文

Private Sub object_OnPausedFlagChange ([index As Integer])

OnPausedFlagChange イベントの構文の指定項目は次のとおりです。

指定項目内容
objectWaveOut コントロールを指すオブジェクト式です。
indexobject がコントロール配列の場合に、配列内の個々のコントロールを指す整数値です。

解説

一時停止状態になったとき、および一時停止が解除されたときに発生します。一時停止状態であるかどうかは、IsPaused プロパティの値で調べることができます。