
Active Basic4.23.00でプログラムを書いています。
音楽再生ソフトを作ってみようと思い、作り始めたのですが、なかなかループ再生が出来ません。
チェックボックス1がチェックされていると、ループさせようと思っています。
↓問題のコード
Sub MainWnd_MciNotify(flags As Long, DevID As DWord)
If SendMessage(GetDlgItem(hMainWnd,CheckBox1),BM_GETCHECK,0,0)=BST_CHECKED Then
Dim bErr As Long
Dim mpp As MCI_PLAY_PARMS
mpp.dwCallback=hMainWnd
mpp.dwFrom=0
bErr=mciSendCommand(mop.wDeviceID,MCI_PLAY,MCI_NOTIFY or MCI_FROM,mpp)
If bErr Then
MessageBox(hMainWnd,"デバイス再生エラー","Error",MB_OK or MB_ICONHAND)
Exit Sub
End If
Else
mpp.dwCallback=hMainWnd
mpp.dwFrom=0
End If
End Sub
一見、(少なくとも自分は)成功しているように見えるのですが、
2回ループした後、フリーズしてしまいます。
すみませんが、何故そうなるかが分かる方がいらっしゃいましたら、すみませんが、ご教授ください。
お願いします。
No.1ベストアンサー
- 回答日時:
こんばんは。
それですと、再生が終了していないにも関わらず、MciNotifyの中で、2度、3度と再生する事に成ってしまいます。
恐らくこれが原因で固まったのでしょう。
MciNotifyの第一パラメータflagsを確認して、
MCI_NOTIFY_SUCCESSFUL
と等しかった時に再生が終了した事を意味するのですから、その時に再び、音楽を再生してあげれば良いと思います。
ここが参考になります。
http://www13.plala.or.jp/kymats/study/MULTIMEDIA …
以下参考程度に。
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
今のプログラミング言語
-
プログラミングについて
-
CSVファイルの複数行削除
-
vba クリップボードクリアにつ...
-
画像生成AIのプロンプトの作り...
-
プログラム言語
-
自作scratch アニメの商用利用
-
OS入ってる機器のソフト・アプ...
-
Google ColaboでGUI作成
-
数学、プログラミング、物理、...
-
pip --versionがエラーになる
-
パイソンのソースコードをChatG...
-
VBSでテキストファイルの2行目...
-
Geminiフォーム 画像生成で 人...
-
pythonの実行に関する質問
-
Python 3.12.2 か一番最新のパ...
-
プログラミングに興味があるの...
-
Rでのデータフレーム作成について
-
google Colabでmatplotlibの描...
-
Python... 環境設定 初心者です...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Media Playerコントロールを貼...
-
【C#】wavファイルの複数同時再生
-
再生中のフラッシュ・巻き戻し...
-
Flashで右クリックメニューにつ...
-
FLASHでピクロス(お絵かきロジ...
-
パソコンのオープンフレームっ...
-
段ボールみたいな材質でできて...
-
フレーム内に移動したい
-
フレーム内のオプションボタン...
-
phpで音を鳴らす
-
フレームでのResponse.Redirect
-
Access2010でサブフォームのフ...
-
ドロップフレームの計算をエク...
-
cisco catalystのトラブルシュ...
-
VBで動的に作成したパネルの上...
-
先日赤札堂で眼鏡を購入し、今...
-
オプションボタンを矢印キーで...
-
トグルボタンの排他制御でご教...
-
C#でDLLファイル読み込みを行う...
-
ムービークリップを1コマ飛し...
おすすめ情報