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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Flashファイルのループ再生方法
-
VBSでHTMLソースの取得方法で
-
マスクの形を自由自在に変えたい
-
C#でDLLファイル読み込みを行う...
-
FLASH CS3 フェードインフェー...
-
iframeはSEO的に不利になる?
-
gh5のカメラを購入しました、初...
-
シーンからムービクリップ内の...
-
オプションボタンを矢印キーで...
-
眼鏡レンズを持参すればフレー...
-
ムービーの早送りと巻き戻しが...
-
動画ファイルから画像ファイル...
-
フラッシュで逆再生中の停止に...
-
再読み込みが可能なPDFビューワ...
-
めくれるカードの作成方法
-
flashのアクションについて教え...
-
Flash・携帯の待受時計Flashを...
-
シーケンス番号の初期値
-
フレームをまたいだ背景画像の...
-
Flash再生中につぎのフレームを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#】wavファイルの複数同時再生
-
FLASHでピクロス(お絵かきロジ...
-
Flashで右クリックメニューにつ...
-
ActiveBasic 音楽のループ再生
-
WAVEファイルが音飛びする?
-
Flash3.0 ループ再生について
-
Flash Liteで作成したFlash待ち...
-
Flashファイルのループ再生方法
-
FLASHでのアニメーション制作で...
-
flashを一度だけ再生するHTMLは...
-
再生中のフラッシュ・巻き戻し...
-
サウンドの同期(スクリプトで...
-
Flash8 ムービーがループして...
-
Action ScriptのMax
-
ループの回数を指定するには?
-
Flash MX初心者です!
-
フレーム内に移動したい
-
Access2010でサブフォームのフ...
-
phpで音を鳴らす
-
WEBブラウザの重複起動の禁止
おすすめ情報