• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ActiveBasic 音楽のループ再生)

ActiveBasic 音楽のループ再生

このQ&Aのポイント
  • Active Basic4.23.00を使用して音楽再生ソフトを作成していますが、ループ再生がうまくできません。
  • チェックボックス1がチェックされている場合、ループ再生を行いたいと考えています。
  • 問題のコードでは、ループ再生の処理が行われているようですが、2回ループした後にフリーズしてしまいます。分かる方がいらっしゃいましたら、教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

 こんばんは。  それですと、再生が終了していないにも関わらず、MciNotifyの中で、2度、3度と再生する事に成ってしまいます。  恐らくこれが原因で固まったのでしょう。  MciNotifyの第一パラメータflagsを確認して、  MCI_NOTIFY_SUCCESSFUL  と等しかった時に再生が終了した事を意味するのですから、その時に再び、音楽を再生してあげれば良いと思います。  ここが参考になります。  http://www13.plala.or.jp/kymats/study/MULTIMEDIA/mciCommand_callback.html  以下参考程度に。 Sub MainWnd_MciNotify(flags As Long, DevID As DWord) 'ループのチェックが入っている If SendMessage(GetDlgItem(hMainWnd,CheckBox1),BM_GETCHECK,0,0) = BST_CHECKED Then 'フラグが再生終了を意味している時 if flags = MCI_NOTIFY_SUCCESSFUL Then Dim mpp As MCI_PLAY_PARMS Dim bErr As Long mpp.dwCallback=hMainWnd mpp.dwFrom=0 '音楽の位置を先頭に持っていく bErr = mciSendCommand(DevID,MCI_SEEK,MCI_SEEK_TO_START, byval 0) If bErr Then MessageBox(hMainWnd,"デバイス再生エラー","Error",MB_OK or MB_ICONHAND) '再び再生する bErr = mciSendCommand(DevID,MCI_PLAY,MCI_NOTIFY,mpp) If bErr Then MessageBox(hMainWnd,"デバイス再生エラー","Error",MB_OK or MB_ICONHAND) End If End If End Sub

if-so-at
質問者

お礼

詳しい解説ありがとうございました 助かりました!

関連するQ&A