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ランキング
-
プログラム言語について。
-
C#とC++について。
-
CLispのloop内の挙動について
-
interface 2021年5月号 P46
-
VBA 電話番号の正規表現について
-
VBAでパワーシェルを実行したい...
-
vba クリップボードクリアにつ...
-
ImageMagickでgif画像の一部が...
-
Windowsのアプリ開発ってなんの...
-
プログラミングのPythonのnoteb...
-
pythonで複数画像からgifを作る...
-
ExcelVBAでFormulaR1C1を列範囲...
-
初心者powershellのPS1ファイル...
-
Google ColaboでGUI作成
-
小学1年生の子です。塾に行かせ...
-
そのまま使っただけなのに・・...
-
プログラマーと学歴の関係性に...
-
Pythonでgif画像が上手く作れない
-
windowsでテキストファイルの各...
-
プログラミング、アーキテクチ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#】wavファイルの複数同時再生
-
Flashで右クリックメニューにつ...
-
FLASHでピクロス(お絵かきロジ...
-
Flashで1回だけ再生するには?
-
再生中のフラッシュ・巻き戻し...
-
FALSH一部レイヤーだけループ再生
-
Flashファイルのループ再生方法
-
swf書き出しでループ
-
Flash Liteで作成したFlash待ち...
-
フレーム内に移動したい
-
ドロップフレームの計算をエク...
-
Access2010でサブフォームのフ...
-
phpで音を鳴らす
-
フレーム内のオプションボタン...
-
VB6のスクロールバー付きフレー...
-
C#でDLLファイル読み込みを行う...
-
VBで動的に作成したパネルの上...
-
cisco catalystのトラブルシュ...
-
車の運転時のメガネ 縁なし(...
-
WEBブラウザの重複起動の禁止
おすすめ情報