c并非所有的代码路径都返回值_两行C语言代码播放音乐,就这么so easy!你学到了吗?...
函数介绍
为了实现用C语言播放音乐,我们需要用到windows的一个API,mciSendString。
函数原型为:
MCIERROR mciSendStringA(
LPCSTR lpstrCommand,
LPSTR lpstrReturnString,
UINT uReturnLength,
HWNDhwndCallback
);
1,返回值:MCIERROR即DWORD类型,而DWORD类型就是unsigned int,执行成功返回0,出错返回非0值
2,lpstrCommand,指向以null结尾的命令字符串:”命令 设备[ 参数]”
3,lpstrReturnString,指向接收返回信息的缓冲区,为NULL时不返回信息
4,uReturnLength,上述缓冲区的大小
5,hwndCallback,在命令串中含notify时,它指定一个回调窗口的句柄,一般为NULL
使用方法
具体的播放代码是这样子滴:
mciSendString("stop a", NULL, 0, NULL); //停止播放音乐
mciSendString("close a", NULL, 0, NULL); //关闭音乐
open指令打开需要播放的音乐,alias后面制定了前面文件路径的别名,以后想要操作这个文件直接使用这个别名就行了,后面的三个参数平时,就记着写作NULL,0,NULL即可。
第二条语句play指令后面接上面定义的别名,repeat表示歌曲循环播放。如果想要在音乐播放时停止播放,有以下代码
mciSendString("stop a",NULL,0,NULL); //停止播放音乐
mciSendString("close a",NULL,0,NULL); //关闭音乐
总而言之:play a开始播放,stop a停止播放,close a关闭文件,如果需要同时播放多个音乐的话应该为每个音乐设置不同的别名,这样就可以了
注意:还有一个函数PlaySound可以用来播放音乐,但是不支持mp3和wma
返回值错误检查
有时候播放音乐会没有声音,这时候就需要对返回值进行检查了,在返回错误码的同时,还会有对应的错误信息,那么怎么查看信息呢?
这里需要用到另外一个函数mciGetErrorString。
函数原型:
BOOL mciGetErrorStringA(
MCIERROR mcierr,
LPSTR pszText,
UINT cchText
);
1,返回值,没有错误返回非零值,错误返回0
2,mcierr,mciSendString返回的错误代码。
3,pszText,指向缓冲区的指针,该缓冲区接收错误描述,接受之后输出即可看到信息。
4,cchText,pszText缓冲区的长度(以字符为单位)
具体代码如下:
char buf[100] = "";
char buf1[100] = "";
DWORD m1= mciSendString("open ThatGirl.mp3 alias a", NULL, 0, NULL);
int temp=mciGetErrorString(m1, buf, 100);
DWORD m2 = mciSendString("play a", NULL, 0, NULL);
mciGetErrorString(m2, buf, 100);
printf("m1-%u,m2-%u temp:%dn",m1,m2,temp);
printf("%sn%sn", buf,buf1);
运行结果如下:
我这里是能正常播放的,所以一切OK!
如果你想要获取更多C语言、C++、Windows以及QT的知识!
小编有一个免费的C/C++编程学习交流俱乐部,【点击进入】!
还有编程学习文件(源码,项目实战教学视频以及给小白的零基础教程),欢迎初学者和正在进阶中的小伙伴们!
c并非所有的代码路径都返回值_两行C语言代码播放音乐,就这么so easy!你学到了吗?...相关推荐
- 并非所有代码路径都返回值
写代码时提示:并非所有代码路径都返回值 (1)函数Max()是有必要返回值的,因为这个函数的功能就是求得某种结果: (2)函数Main()是没必要返回值的,因为它没什么需要告诉调用者(操作系统)的,所 ...
- 获取存储过程返回值及代码中获取返回值
获取存储过程返回值及代码中获取返回值 1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识 CREATE PROCEDURE [dbo].[nb_order_insert]( @o_b ...
- 获取存储过程返回值及代码中获取返回值(转)
获取存储过程返回值及代码中获取返回值 1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识 CREATE PROCEDURE [dbo].[nb_order_insert]( @o_b ...
- python process返回值_如何恢复传递给multiprocessing.Process的函数的返回值?
如何恢复传递给multiprocessing.Process的函数的返回值? 在下面的示例代码中,我想恢复函数的返回值worker.我该怎么做呢?这个值存储在哪里? 示例代码: import mult ...
- qdialog 返回值_如何从Python中的QDialog实例返回值?
我想打开一个QtGui.QDialog,从用户请求一组值,然后在单击"保存"后返回值.在 下面的代码应该在不修改的情况下运行.在import sys from PySide imp ...
- bat获取命令返回值_全网都在找的redis字符串命令,总结在这了
概述 redis一般用来做缓存,可能很多朋友都没有深入去学习redis的相关命令,只是涉及到安装部署而已,所以今天主要总结介绍一下redis字符串的一些命令. SET 语法:SET key value ...
- cefsharp执行完js代码后获取返回值问题
CefSharp相关操作 Task<CefSharp.JavascriptResponse> t = mychrome.GetBrowser().MainFrame.EvaluateScr ...
- php readfile 返回值,PHP readfile( )用法及代码示例
PHP中的readfile()函数是一个内置函数,用于读取文件并将其写入输出缓冲区.文件名作为参数发送到readfile()函数,它返回成功读取的字节数,如果失败,则返回FALSE和错误. 通过在函数 ...
- struts 修改拦截器修改返回值_关于struts2简单的介绍与示例
Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构.它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构. 缘起于Apache St ...
最新文章
- python之路---25 模块和包
- mac idea用自带的maven还是_苹果电脑自带截图工具怎么用?mac自带截屏工具使用技巧分享
- php如何转换类型,PHP数据类型转换
- 福昕pdf虚拟打印机_一学就会的PDF文档压缩小技巧
- SAP S/4HANA生产订单创建之后,为什么会自动执行action
- java中抽象类,abstract关键字
- 队列的基本概念介绍以及典型应用示例
- Android之仿ele地图定位效果
- sessionFactory.getCurrentSession()的引出
- 毕设使用EndNote管理Word文献
- 热更新Sophix的爬坑之路
- Tomcat 9 免安装版 配置教程
- 三维分子图的球面信息传递
- 苹果计算机取消用户名和密码进入不,苹果电脑怎么退出账户登录不了怎么办
- 【VOLTE】【SRVCC】【3】 VOLTE SRVCC切换失败场景
- 图论专题HDU-1869 六度分离
- excel美化技巧-持续更新
- 如何在Windows系统上制作U盘启动盘?
- table数据刷新;v-if刷新el-table表格
- linux下创建php文档,linux新建文件有哪些方法
热门文章
- ssh (安全外壳协议)Secure Shell 百度百科
- python开发飞船游戏
- python count函数用法 comm_Python学习第六天课后练习案例 (主要针对的内容是python函数的定义和使用)...
- 暴涨30%!马斯克突然杀入推特:当上最大股东!
- 顺丰控股:2月速运物流业务营业收入98.49亿元,同比下降3.36%
- 京东:应届博士生年薪最高达200万元!确认过眼神,是我羡慕不来的人
- 为了多拿点补贴,马斯克甚至还当过“渣男”?
- 华为关联公司哈勃投资晟芯网络 持股10%
- 瑞幸咖啡获2.5亿美元融资:将用于债务重组及与SEC和解
- 制造业一声叹息!干30年实业不如炒股?