昨天晚上遇到一个问题:

使用 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 多线程播放多首音乐 注意事项相关推荐

  1. AudioContext实现同时播放两首音乐在左右音道上

    AudioContext实现同时播放两首音乐在左右音道上 直接上代码 <!DOCTYPE html> <html lang="en"><head> ...

  2. 使用C语言播放一首音乐

    播放音乐 大家好,我是辰梦! 很久没有写过文章了,在这期间,我写了很多代码,但很多都是别人写的,我想了又想,今天把我觉得比较好的代码给大家分享出来! 相信大家也找了很久的C语言音乐播放器,在这里,我就 ...

  3. 流行歌单片机c语言编程,单片机6首音乐播放的proteus仿真电路及C语言程序设计...

    #define uchar unsigned char //定义一下方便使用 #define uint  unsigned int #define ulong unsigned long #inclu ...

  4. java学习之路之播放一首简单的音乐

    1.首先,要去网上下载个JMF工具,这个工具可以播放通常情况下的Mp3音乐文件和视频,也叫做Java媒体框架,可以去官网下载JMF官网下载,下载完之后,有个jmf的exe安装文件,双击打开进行安装,安 ...

  5. 实验十:红外遥控简单mp3播放器(2首音乐,只有旋律,播放器雏形)

    OK,今天的实验 我感觉我可以开发mp3了,哈哈 不过,我对音乐了解不多,所以都是简单的设计 功能: 1)红外遥控 2)CH-播放<生日快乐> 3)CH+播放<小星星> 4)C ...

  6. android小应用,只能播放一首歌的应用

    1.上学期,选修课为安卓,要求我们做一个小应用作为安卓的大作业,我就做了一个小小的音乐播放器,实现的功能很少,就是使用Service服务来播放一首音乐,其中用了很多菜单效果,然后主界面实现了一个画廊的 ...

  7. Android之播放一首简单的音乐

    1.首先,创建一个项目,名为Mp3Test,创建完之后打开res目录下的layout下的activity_main.xml文件,打开src下的MainActivity.java文件,首先,先把布局文件 ...

  8. HTML+CSS+原生JS写一个简易的音乐播放器(仅播放一首歌)

    用HTML+CSS+原生JS写一个简易的音乐播放器(仅播放一首歌) 效果如下:(鼠标点击按钮可以实现播放或暂停,按钮会旋转,实现了歌词同步,功能还需改进) 代码如下: <!DOCTYPE htm ...

  9. PC端网易云音乐播放云盘音乐时显示加载失败,自动调转下一首的解决方法

    PC端网易云音乐播放云盘音乐时显示加载失败,自动调转下一首解决方法 注意: 一定要看看是不是和你的情况一样,不一样不要用这种方法!!! 具体情况: 我们经常会下载歌曲存到电脑文件夹里,然后通过网易云音 ...

最新文章

  1. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动加和(rolling sum)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额加和
  2. 一文弄懂各种loss function
  3. PhotoSwipe 图片浏览插件使用方法
  4. Redis源码剖析(十一)跳表
  5. 12个git实战建议和技巧
  6. 用python编写最简单的记事本_Python使用字典实现的简单记事本功能示例
  7. rpm的mysql安装_MySQL 5.7.22 rpm 安装方式
  8. 连续4年财务造假 造假金额过亿!捧红杨幂的欢瑞世纪被重罚
  9. 用python读取excel文件观看节目的总时长_python读取excel所有数据(cmd界面)
  10. Java多线程设计要点
  11. sourcetree合并分支_不会git命令,没关系啊,还有强大的图形界面工具SourceTree
  12. 编程中常见的安全算法
  13. Origin 在新打开的工作区添加列
  14. excel锁定计算机,excel表格根据时间锁定如何操作
  15. 证照之星下载证件照制作软件ps及使用教程,附序列号秘钥激活码
  16. 显卡更新显示计算机无法识别,显卡驱动更新不了怎么办 显卡驱动更新不了解决方法...
  17. 用MSN Cartoon做的卡通自画像
  18. 数据结构(C语言)-广义表
  19. jquery 将下拉框重置_select下拉框之默认选项清空
  20. WuThreat身份安全云-TVD每日漏洞情报-2022-12-26

热门文章

  1. 动手学PaddlePaddle(0):新版本PaddlePaddle安装
  2. 邮件发送类_10 分钟实现 Spring Boot 发生邮件功能
  3. 计算机怎样连接网络适配器,win10 本地连接共享internet时, 会将承载网络适配器IP设置成192.168.137.1但不成功...
  4. html验证邮箱自动,html5+JavaScript进行邮箱地址验证
  5. 创建或更改表 tablename 失败_mysql 创建用户
  6. mysql memcached java_java缓存技术memcached实例
  7. n位数的全排列(需要考虑大数的情况)
  8. leetcode261. 以图判树
  9. PRML(4)--Chapter2(下)-非参数估计
  10. C++primer第九章 顺序容器 9.1 顺序容器概述 9.2容器库概览