日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mciSendString 多线程播放多首音乐 注意事项

發布時間:2023/12/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mciSendString 多线程播放多首音乐 注意事项 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

昨天晚上遇到一個問題:

使用?mciSendString? 控制播放多首音樂的時候,出現最后一次播放的音樂無法通過?mciSendString ("close mp3") 關閉音樂的播放。

mciSendString? 在多個線程中調用。

到23點,問題依然沒解決,只好先上床睡覺。

?

今天早上,經過半個小時的研究,終于找到問題的原因。

mciSendString? 在多次的操作: open -> play -> pause -> resume -> close -> open -> play -> ... loop

mciSendString 的所有操作必須在同一個線程中完成!

昨天晚上遇到的問題就是因為?mciSendString 的不同操作在不同的線程中調用,導致在 A線程中的 play 在 B線程中無法通過?mciSendString("close ..") 關閉音樂的播放。

?

但是在程序中,需要使用到多線程,這個時候的解決方案:

先設置幾個 command - id:

enum {id_b_video_preivew_bgsound_play, id_b_video_preivew_bgsound_play_next, id_b_video_preivew_bgsound_pause, id_b_video_preivew_bgsound_resume, id_b_video_preivew_bgsound_close}

?

在不同的線程中,不論 open, play, pause, resume,close, 全通過調用 SendMessage(...,?WM_COMMAND...);? 觸發:

SendMessage(hwnd_frame, WM_COMMAND, MAKEWPARAM(id_b_video_preivew_bgsound_open, 0), 0); //模擬發送 WM_COMMAND

SendMessage(hwnd_frame, WM_COMMAND, MAKEWPARAM(id_b_video_preivew_bgsound_play, 0), 0); //模擬發送 WM_COMMAND

SendMessage(hwnd_frame, WM_COMMAND, MAKEWPARAM(id_b_video_preivew_bgsound_close, 0), 0); //模擬發送 WM_COMMAND

這樣所有的?mciSendString? 的動作都在一個線程中完成( 用戶UI線程 )完成。

?

這樣之前的問題就不存在了。

?

?

名品推薦:簡百靈?朗斐?愛華仕

轉載于:https://www.cnblogs.com/personnel/p/7721737.html

總結

以上是生活随笔為你收集整理的mciSendString 多线程播放多首音乐 注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。