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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454266.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454266.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454266.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python代碼比例_Python如何輸出百分比

Python 輸出百分比的兩種方式 注: 在python3環境下測試。 方式1:直接使用參數格式化:{:.2%} {:.2%}: 顯示小數點后2位 顯示小數點后2位: >>> print(percent: {:.2%}.format(42/50)) percent: 84.00% 不顯示小…

為機器學習占地15

是將若干個學習器(分類器&回歸器)組合之后產生一個新學習器。弱分類器(weak learner)指那些分類準確率只稍微好于隨機猜測的分類器(errorrat弱分類器的多樣性(Diversity)。而且集成不穩定的算法也能夠得到一個比較明顯的性能提升。 常見的集成學習思想有:Baggi…

編寫一個項目開發文檔

項目開發過程中為了增加程序的可讀性和程序的健壯性, 方便后期程序的調試和維護,所以需要在開發過程中統一技術規范,一般會在項目初期確定好相關文檔作為這一統一的規范。不同公司會對文檔做不同要求,劃不同的分類,但一…

樂在其中設計模式(C#) - 原型模式(Prototype Pattern)

[索引頁][源碼下載]樂在其中設計模式(C#) - 原型模式(Prototype Pattern)作者:webabcd介紹用原型實例指定創建對象的種類,并且通過拷貝這個原型來創建新的對象。示例有一個Message實體類,現在要克隆它。MessageModelusing System; using Syst…

python123添加列表元素_Python之列表

Python變量沒有數據類型,所以Python沒有數組。 整數;浮點數;字符串;對象 創建一個列表: 1.member[大魚,123,3.14,[1,2,3]] 2.empty[] 向列表添加元素: append(): member[…

為機器學習占地14

是將若干個學習器(分類器&回歸器)組合之后產生一個新學習器。弱分類器(weak learner)指那些分類準確率只稍微好于隨機猜測的分類器(errorrate <。 集成算法的成功在于保證弱分類器的多樣性(Diversity)。而且集成不穩定的算法也能夠得到一個比較明顯的性能提升。 常見的…

優秀程序員 分析提高能力 程序進階

我出生在南方的一個農村。還記得小時候家里是很窮的&#xff0c;那時候上學也很便宜&#xff0c;我已記不清初中以前的學費是多少了。反正從小在家里玩泥巴&#xff0c;有一日村里兩個女孩去上學&#xff0c;看到我就說一起去上學吧。當時一想&#xff0c;玩泥巴也厭煩了&#…

html中通過點擊button標簽實現頁面跳轉的三種方法

方法1&#xff1a;使用onclick事件 <input type"button" value"按鈕"onclick"javascrtpt:window.location.hrefhttp://www.baidu.com/" />或者直接使用button標簽 <button onclick"window.location.href https://www.baidu.com…

mybatis調用存儲過程

直接貼代碼吧 注解式可以調用 但是不能返回結果 所有我就貼配置式的 有知道注解怎么返回結果的請評論 數據庫代碼 #表 DROP TABLE IF EXISTS p_user; CREATE TABLE p_user (id int(11) NOT NULL AUTO_INCREMENT,name varchar(10) DEFAULT NULL,sex char(2) DEFAULT NULL,PRIMAR…

java dump分析工具_Java 性能分析工具 (2):Java 內置監控工具

引言本文為 Java 性能分析工具系列文章第二篇&#xff0c;第一篇&#xff1a;操作系統工具。在本文中將介紹如何使用 Java 內置監控工具更加深入的了解 Java 應用程序和 JVM 本身。在 JDK 中有許多內置的工具&#xff0c;其中包括&#xff1a;jcmd&#xff1a;打印一個 Java 進…

Linux+php+memcache+APC加速PHP網站

一、前言對于一個站長而言不僅要做好網站內容外&#xff0c;還需要對網站做優化&#xff0c;如果速度訪問很慢的&#xff0c;沒有人下次再訪問你的站點&#xff0c;目前國內使用php的網站不計其數&#xff0c;這里用我的博客為例&#xff1a;http://chinaapp.sinaapp.com 以加速…

為機器學習占地13

是將若干個學習習 弱分類器間存在一定的差異性&#xff0c;這會導致分類的邊界不同&#xff0c;也就是說可能存在錯誤。那么將多個弱分類器合并后&#xff0c;就可以得到更加合理的邊界&#xff0c;減少整體的錯誤率&#xff0c;實現更好的效果&#xff1b; 對于數據集過大或者…

Python面試題(第二篇)

第二部分 網絡編程和并發&#xff08;34題&#xff09;1、簡述 OSI 七層協議。2、什么是C/S和B/S架構&#xff1f;3、簡述 三次握手、四次揮手的流程。4、什么是arp協議&#xff1f;5、TCP和UDP的區別&#xff1f;6、什么是局域網和廣域網&#xff1f;7、為何基于tcp協議的通信…

noip模擬賽 radius

分析&#xff1a;這道題實在是不好想&#xff0c;一個可以騙分的想法是假定要求的那個點在中心點上,可以騙得不少分.但是在邊上的點要怎么確定呢&#xff1f;理論復雜度O(&#xfe62;無窮).答案一定是和端點有關的&#xff0c;涉及到最大值最小&#xff0c;考慮二分最大值&…

來自IT公司速查手冊的各大IT公司薪資和待遇內幕

來自IT公司速查手冊的各大IT公司薪資和待遇內幕 &#xff08;轉載于 http://xuchaoyi99.cnblogs.com/ &#xff09; 編號 1. 杭州 諾基亞 2. 南京 趨勢科技 Trend 3. 北京 聯想&#xff08;北京&#xff09;有限公司 4. 深圳 華為 5. 深圳 中興通訊 6. 上海 SAP 7.…

Docker 精通之 Dockerfile

Docker 精通系列 Docker 精通之入門Docker 精通之微服務Docker 精通之常用命令Docker 精通之 Dockerfile 1.基本說明 Dockfile 是一個用于編寫 docker 鏡像生成過程的文件&#xff0c;其有特定的語法。在一個文件夾中&#xff0c;如果有一個名字為 Dockfile 的文件&#xff0c…

c語言中int的取值范圍_c語言入門(1)

c語言入門C語言一經出現就以其功能豐富、表達能力強、靈活方便、應用面廣等特點迅速在全世界普及和推廣。C語言不但執行效率高而且可移植性好&#xff0c;可以用來開發應用軟件、驅動、操作系統等。C語言也是其它眾多高級語言的鼻祖語言&#xff0c;所以說學習C語言是進入編程世…

vue : 無法將“vue”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。請檢查名稱的拼寫,如果包括路徑,請確保路徑正確, 然后再試一次。

vue : 無法將“vue”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。請檢查名稱的拼寫&#xff0c;如果包括路徑&#xff0c;請確保路徑正確&#xff0c; 然后再試一次。 報錯原因&#xff1a; 沒有安裝腳手架vue-cli 解決方法&#xff1a;安裝腳手架vue-cli npm inst…

session的生命周期

session的生命周期分為創建、活動、銷毀三個階段 創建一個新的會話不代表舊的會話就銷毀了 session.invalidate()方法可以銷毀當前會話 在page1中寫上這個方法再打開網頁 說明該會話被銷毀了出現了錯誤 我們把這個方法寫在所有代碼段的下面 再打開這個網頁 刷新網頁 這個sessio…

虛擬化與網絡

本文轉自Grodd51CTO博客&#xff0c;原文鏈接&#xff1a;http://blog.51cto.com/juispan/1959791&#xff0c;如需轉載請自行聯系原作者