为什么c语言添加音乐音乐放不了

努力追求更高的编程境界(邮箱:)
C语言怎样播放音乐
想必大家都想在程序中播放音乐吧,怎样播放呢?很简单只需要一个API函数就可以了mciSendString(),函数原型请参考MSDN介绍。不多说上例子。
// 编译该范例前,请把 background.mp3 放在项目文件夹中
// 发布时,请把 background.mp3 和编译的 exe 放在一起
// 编译环境:VC6 + EasyX v
#include &graphics.h&
#include &conio.h&
// 引用 Windows Multimedia API
#pragma comment(lib,"Winmm.lib")
void main()
initgraph(100, 40);
// 打开音乐
mciSendString("open background.mp3 alias mymusic", NULL, 0, NULL);
outtextxy(0, 0, "按任意键开始播放");
// 播放音乐
mciSendString("play mymusic", NULL, 0, NULL);
outtextxy(0, 0, "按任意键停止播放");
// 停止播放并关闭音乐
mciSendString("stop mymusic", NULL, 0, NULL);
mciSendString("close mymusic", NULL, 0, NULL);
outtextxy(0, 0, "按任意键退出程序");
closegraph();
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!22:32 提问
基于单片机用C语言的音乐播放器怎么实现暂停和播放
void song(unchar p)
//jp是简谱
unint i=0,j;
temp=(p+i);
if(temp==0xff)
jp=temp/16; //取数的高4位
P1=yinyue[jp];
timeh=cuzhi[jp*2];
timel=cuzhi[jp*2+1];
fm=1;//关蜂鸣器
delay(temp%16); //取数的低4位
//唱完一个音停10MS
delay_ms(10);
keyboard();
if(number==6)
keyboard();
if(number==6)
//其中number是按键对应的传递数值来实现暂停,可是不知道为什么能实现暂停但是不能再播放
按赞数排序
代码太乱,你也没说清楚哪个num表示暂停。
关键是你暂停的时候记录下当前的p(播放位置)到全局变量,恢复的时候从这个地方开始播放。调试下你的程序。
暂停后,要把当前状态全部保存下来,播放的时候恢复,有点像中断的机理
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐c语言如何播放mp3类型的音乐? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。2被浏览766分享邀请回答#include &mmsystem.h&
int main(void) {
mciSendString("open foo.mp3 alias music", NULL, 0, NULL);
mciSendString("play music wait", NULL, 0, NULL);
善用搜索&MSDN。13 条评论分享收藏感谢收起C语言中添加音乐的问题_百度知道
C语言中添加音乐的问题
求讲解下面这段程序。。。看不太明白。我只是想添加一段背景音乐,要这么复杂吗?求大神大神大神!void loadSound(const char *fileName,ACL_Sound *pSound)
char *cmdS
int len = strlen(fileName)*sizeof(char);
cmdStr = (char*)m...
我有更好的答案
mciSendString(TEXT(&close MySong&), NULL, 0, NULL);
停止播放,可以解决一些不必要的麻烦
*/wsprintf(play_lujing2,&open \&%s\& alias mysong&,“d:/爱你一万年.mp3”);//将字符串准备好mciSendString(TEXT(play_lujing2), NULL, 0, NULL);//将歌曲打开mciSendString(TEXT(&play MySong&), NULL, 0, NULL);//播放歌曲这样就可以实现播放了,更多的功能请下载这个:(可以看MV、下载歌曲的c语言播放器)
采纳率:59%
需要,,这段代码貌似在那个window编程书里很常见
为您推荐:
其他类似问题
c语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。专注于大学生就业的在线教育
用C语言打造的音乐播放器
此文章为如鹏网旧版论坛文章存档,不可回复。
cjnt007():
  到如鹏学习了几周时间了,但由于工作比较忙,学习的进度一直比较慢,到现在才学完第8讲。现在把前一段的学习所得形成一个大作业向坛子上的大师们进行汇报。
  SQPlayer音乐播放器:
  内核是通过mciSendString来进行音频文件的播放,加入了播放列表功能(添加音乐文件时可多选),加入了播放进度显示和播放时间显示功能,比较完善的播放控制,双击列表项自动播放。
  目前还需完善的功能有:
  1、待加入播放进度拖动。
  2、播放列表的保存与载入。
  3、音量的控制。
  4、循环播放。
  5、……
  存在的困难:
  如何让程序响应TrackBar的拖动操作,这样就可以实现上述的1和3两个功能了。在网上转悠的几天,没有找到有价值的资料,还是坛子上的大师们指教。
  由于mciSendString的问题,有些mp3就是不能播放。
  现在把程序贡献出来,让大家先试用下,呵呵!源代码等上述几个功能实现后再发布!
  
zhiping-21):
不错 学习了
cqupt_klmct():
好东东 下来看看
欢迎到如鹏来发表作品!!
cjnt007():
修改了下,加入了循环播放控制,加入了播放列表的保存与恢复功能,自动在程序路径下生成DefList.lst文件来保存播放列表。
播放器程序:
TrackBar的拖动响应怎么写,谁来教教我呢?播放进度与音量控制还没有实现啊!今天上午在网上看消息分流器的资料,一头雾水哦!
cjnt007():
  经过几天的奋战,终于完成了我的第一款“大型”C语言编程作品《SQPlayer》,现在展示出来的这款功能已经比较完善了(是对于我自己来说的,不能跟专业播放器比哟!)。
[align=center]  功能列表:
  1、播放、暂停、停止、快进、快退;
  2、上一首、下一首、循环控制;
  3、音量控制;
  4、播放列表的自动保存与加载;
  5、音量设置、循环方式能自动保存。
  虽然只是一款迷你型的音乐播放器,而且对mp3的容错性还比较差,但对于她的出世,我还是很有成就感的。因为开发过程中会遇到很多的困惑,大部分问题都是自己在网上找资料+自己不断摸索来解决的,每当解决了一个问题,就像打了一场胜战一样高兴,哈哈!
  由于自己尚处于入门级的水平,对许多知识的缺乏导致开发中也有一些遗憾:比如想通过TrackBar控件实现对播放进度的调整和对音量的调整,最终因找不到有用的资料,只能改成用按钮来控制。
  现在我把源代码在坛子上贡献出来,以表示对如鹏网杨中科老师给我提供学习知识的感谢!也算是为网站的发展出点力吧,现在这样的好网站不多啊!
cjnt007():
哈哈,努力得到了杨老师的认可!谢谢!这也是我深入学习的动力!
刚刚实现了文件拖放添加到播放列表中的功能,并修复了几个小问题,汗!音量调整按钮的图标竟然弄反了!
等继续完善后再发布源码。
呵呵 我也是三个月之前 在论坛上发了那个C语言开发工具的代码
受到杨老师的鼓励才加强了不少信心
加油!
cjnt007():
我也是来如鹏之后才windows编程入门
之前学习了一段时间算法和数据结构
我觉得只要肯下苦功 用不了多长时间你也能做出来
尘封是我学习的榜样!
wangfutao01():
加油!。。不错。!支持一下!
cjnt007():
通过研究和利用消息分流器,实现了用滑块调整播放进度和音量了。
对Windows的消息机制有点感觉了,呵呵!
今天好像上传不了附件了,不好让大家分享啦,稍后再看看!
cjnt007():
  这两天一直在打磨这个小软件,想着不断地完善和增加小的功能,也通过这项工作逐渐地学习和掌握C语言编程。不要小看这个软件,其中还真遇到许多想不到的麻烦事儿。增加的功能越多,各部件之间的协调也就越复杂。
  这款软件(其实还不能叫软件,充其量只是一个小程序而已)目前还有一些问题:
  1、对mp3的容错不佳,虽然我在代码中也增加了处理,很大程序上减少了程序的崩溃机率,但偶而还是会发生上述状况。
  2、目前增加了对MP3的ID3V1信息的读取,对于ID3V2以及wma信息的读取也研究了许多时间,但精力有限,就暂时不做了。
  3、用listbox能显示的信息很受约束,本想通过对字符串的处理来进行分列显示诸如时间、标题,当前播放等其他信息,但做了一半发现效果不是太好,就放弃了,以后有时间还是改为listview吧。
  4、右下方的区域是想用来显示歌词的,功能暂时保留吧。
  5、虽然可以播放wav文件,但音量控制不了,需要用其他API函数来控制,而会影响到系统的wav总音量,暂时也没有做进去。
  6、这个版本对代码进行了进一步的优化。原来的回头看看自己都觉得太乱了,呵呵!
  7、本想对播放列表文件加入文件头对版本信息进行控制的,这样就不会因为改进了列表存储的数据结构导致读取数据发生错乱了,还是以后再改进吧。
  8、关于图标,我在单位电脑上编译后,程序图标是个我的自定义图标,但回到家里重编译就变成了默认的图标了,但运行后,标题栏上图标是自己的,不知道什么原因。
  源代码奉上,有兴趣的自己研究下吧!这款程序我目前就开发到这里了!
cjnt007():
再补充一个关于音量的问题:
  我用mciSendString发送“status filename volume”来获取音量时,每首歌曲的默认音量是1000,然后我再以0-1000作为音量调节区间来控制音量时,发现500-1000之间音量没有什么变化,最后通过多次调试,我把音量区间设定在0-500,这样好像差不多。在状态栏上显示的音量0-100是经过换算的。
  有兴趣的同学研究下是什么原因。
s9-06-28):
lz的东西我拿走了哈。
去研究一下。最近有个小程序里面嵌了播放器的功能。
直接拿去用了哈。呵呵。
cjnt007():
阿弥陀佛,施主尽管拿去就是了!
dyong10():
过来看过,下载试用了,向楼主学习
jinchang_-08):
很强的播放器啊,拿去研究
呵呵,我也正在编个音乐播放器,先学习下LZ的代码!!!
harry-hao():
谢谢cjnt007的代码啦,小弟拿去研究研究啦!!
AnsenYu():
我昨天也用写了mciSendString写了个小播放器,不过只是实现了打开文件、显示路径、时间、倒计时、循环播放、暂停、恢复、停止等功能,还不会做列表和调节音量、显示进度、快进/快退的功能,今天刚好看见楼主这帖真的太好了,不过我还是想像楼主那样先自己摸索,摸熟各种控件的使用方法,过程中遇到什么问题能向楼主请教吗?
gengchangrui():
研究一下,向作者学习啊。
cjnt007():
原帖由 AnsenYu 于
19:31 发表
我昨天也用写了mciSendString写了个小播放器,不过只是实现了打开文件、显示路径、时间、倒计时、循环播放、暂停、恢复、停止等功能,还不会做列表和调节音量、显示进度、快进/快退的功能,今天刚好看见楼主这帖真的 ...
AnsenYu的精神值得学习,方法更是值得推荐,欢迎切磋
AnsenYu():
哈哈,这两天都在研究那些控件combobox、listbox、trackbar怎么用,终于弄出了个播放器了哈哈,虽然很简陋远未比得上楼主的播放器,不过我会继续努力改进的,没有最好,只有更好!
AnsenYu():
今天修正了一些bug,比如音量的保存,不会每次播放都到最大音量(函数默认),还有我不是很懂cjnt007的代码里边的在Main_Proc里边函数具体怎么用,这应该关系到WM_类的消息吧,看来还是要先在网上多搜点资料。。O(∩_∩)O哈哈~
AnsenYu():
这两天又增加了播放模式、计时模式、前后首歌、只显示歌名等功能,不过现在在ListBox还是显示路径,如果要只显示歌名,应该要定义一个结构存放信息,不过这两天有点忙,先放下来,过两天再研究
AnsenYu():
昨天终于抽出时间改进我的私人播放器了,在ListBox上已经只显示歌名和后缀,在修改过程中发现在listbox里取得的内容(没有路径、只有歌名和后缀)仍然可以作为路径播放音乐,到底是为什么呢?(一分钟前还想着偷懒不深究下去,就这样提交算了。写到“为什么”的时候,突然良心发现,我不能就这样放过一个探索未知的机会!)我刚试了一下,在添加完曲目后,在打开其他文件夹的音乐,播放正常,然后我再双击之前添加的曲目,竟然不能播放了!!
我突然顿悟了!原来这样做真的不行!这可是一个巨大的BUG呀!我猜想这是跟操作系统的默认路径有关,因为我每次打开的文件都是在同一个文件夹里,所以,打开文件时的对话框直接显示的就是那个默认对话框,然后程序在读取listbox后得到了文件名,然后很自然的在默认对话框里找到文件,然后打开……当我添加完文件后,再打开另外一个文件夹里的文件时,默认路径已经改变,所以双击之前添加的文件时,在新的文件夹里找不到文件!!当然无法打开咯
看来解决问题的根本途径还是像我之前想的:定义一个结构体,保存了歌曲的路径、名字、以及在ListBox中的序号index(这个比较烦人,每次添加歌曲,其他的都要做出相应改变)/*index 的用法:双击Listbox时,得到选中序号,然后搜索相应的index,然后返回路径*/
但是,实际开发中发现带有index的结构(用它来搜索),每一次插入新曲目的时候,其他的元素的index都要做出改变(在listbox中的位置改变了嘛),还有设置专门改变index 的 函数,~~巨麻烦,主要是由于结构体初始化的时候调用Zeromemory把所有的元素的index都变成0,而实际上listbox的index是从0开始,然后就是不停的回避。。。。
总之是很很很麻烦,一气之下,我觉得改变策略:结构只保存路径和歌曲名,插入listbox的时间顺便增加新元素,然后双击选中要播放的条目时,就根据listbox上显示的曲目名,一个一个跟元素的曲目名比较,然后搜到相应的元素,然后就得到了歌曲的路径,O(∩_∩)O哈哈~,虽然从算法上感觉比用Index要慢点(毕竟那个只要比较int 类型,而这个要进行字符串比较),不过从思路上来说,整个算法就简单很多了
哈哈,这应该算是我这个私人播放器暂时的完美版本吧(当然还远比不上那个画出来的播放器)。。。我要开始做俄罗斯方块喽,GDI,等我!
[ 本帖最后由 AnsenYu 于
20:49 编辑 ]
cjnt007():
祝贺AnsenYu取得阶段性成功!
对于播放列表的管理,我想其实就是相当于一个小型数据库了(我比较擅长直接在MS Access系统中进行开发),我们在之前的实现上,其实是偷了一些懒的。目前这个功能要通过C语言来实现确实是相当的麻烦的,起码要实现一个链表吧。
很期待AnsenYu在GDI方面的突破啊!加油!
cjnt007():
原帖由 AnsenYu 于
00:20 发表
今天修正了一些bug,比如音量的保存,不会每次播放都到最大音量(函数默认),还有我不是很懂cjnt007的代码里边的在Main_Proc里边函数具体怎么用,这应该关系到WM_类的消息吧,看来还是要先在网上多搜点资料。。O(∩ ...
Main_Proc里面是消息分流代码。你要实现对某种消息的处理,就要在这里添加相应的消息分流代码。
在C-Free的工具菜单里有“消息分流器”,在“Messages”里定位相应的消息,在“Form”里输入相应的窗体名称,单击“Copy Macro”就获得了消息处理宏代码,粘贴到Main_Proc中,“Copy Prototype”获取相应处理函数的原型申明,放到头文件里,“Copy Fuction”获取函数定义代码,放到主文件中,填入实现代码。
这是我自己研究的结论,使用描述不知道是不是准确,仅供你参考。
AnsenYu():
哦,原来那个是这样用的,谢谢cjnt007,我会好好研究的
做播放器是 好久以来的 梦想,但是,还没有真正实现,看到以上鹏友的作品,非常的羡慕,期待着早日能完成
自己的第一个播放器,实现自己的夙愿。曾经用VB做过一个简单的播放器,参考了有关方面的资料,现在都想不起来啦。不过,现在有了这个大家庭,相互帮助是肯定的啦。不像原来瞎琢磨,没有网络,仅仅是手头一点简单的资料,难度是可想而知了。希望能尽快实现这个作业。
xiaowaiin():
ding !!!!!!!!!!!!!!!1
keminar():
很不错哦。收藏了。
{:3_70:}专业级水平了,都很强
我也是到SLIDER空件的使用把我给卡住了,不急,慢慢研究下
看了楼主的代码,晕了
还是自己的基础不扎实,要努力了
不知道,楼主平时工作用的什么语言?
cjnt007():
不知道,楼主平时工作用的什么语言?
dale 发表于
分享下我学计算机的经历:
  我现在的工作与编程开发没有多大关系,只是偶尔用MS Access快速开发微型or小型MIS提高办公效率。
  上学的时候(中师)学过basic,是在Apple II计算机上运行的。
  后来工作后(9X年)订了5-6年的《电脑报》,从上面学了许多计算机知识。最开始学过foxbase,很古老的DBS,用它开发了工资管理系统、公积金管理系统。
  再后来零零碎碎地学了VB,没正经做过什么东西。之后再从VFP转向MS Access,比较深入地钻研了下,做了不少小MIS,比较得意的是开发了一个记账软件,在网上共享发布赚了一点点辛苦费,这个软件到现在自己还在用着。其间还参加自考(计算机管理信息系统),自学了C语言,虽然考得不错,但没感觉C语言在Windows下有什么作用,当时一直是在turbo2/3下写程序的,然后就把这些东西丢掉了好几年,转向学多媒体开发,为单位同事和朋友做了不少演示软件。
  直到遇到如鹏网,才尝试用C写windows下的程序,做了唯一的一个音乐播放器,主要是通过这个程序理解windows环境下程序运行的机制,同时也对C和之前零星学过的汇编、VB、ASP、C++语言等有了更深入的理解。
  前面所提到得这些基本上都是靠自学的,我现在已是30+的人了,也没有多少精力来学新东西了,以前学的计算机知识也已随着时间的流逝在淡忘,而真正留下来的是编程的思想、系统的思想,虽然这些对于我也很浅薄。
  很是羡慕现在许多同学能够接受很系统、正规的计算机教育,同时也希望大家能够珍惜时光、学好知识、把握机遇,实现自己的人生理想。
  如鹏网真的很不错,杨老师这人更是很难得,希望大家共同支持这个网站,支持杨中科老师!
研究一下,向作者学习啊。
Michael_rp():
好厉害,我正在学,希望早日写出自己的专属播放器!向各位致敬了!!
阿甫哥哥():
已经欣赏过楼主cjnt007的大作了,提出一点小疑问,我认为是你的程序的小缺陷:图片示例首先,我用你的播放器产生了一个播放列表:
图一,这是当前正在播放的歌曲
然后,当我想用鼠标点击ListBox使某一项(非当前播放歌曲)选中,然后点击播放按钮,想实现播放它的时候,你的程序播放的仍然是刚刚播放的那一首歌
图二,是对ListBox中的列表中的非当前播放歌曲,进行选中
头上长草():
我很想知道那个按钮的图标是怎么样实现的呀[img][/img]
头上长草():
请教一下,那些个按钮图标都是怎么实现的呀
god13dog():
我的mcisendstring函数调用不了。。。。。。
cjnt007():
好长时间没来了,还有很多人在关注这个帖子,谢过了!
感谢阿甫哥哥的建议,你说的现象的确存在,我在设计时没有想到这样的操作,只设计了通过“上一曲”、“下一曲”、双击播放列表这样的方式来手工切换歌曲,不过你所说的操作方式也是完全可以实现的,只需要在播放按钮的函数中加入一个判断,即当前列表中高亮的歌曲不是正在播放的歌曲,就结束当前播放,再播放选中歌曲。代码我就不改了,源码之前的帖子里已经提供,如果有需要自己改下吧。
cjnt007():
设置按钮的字体为Webdings ,即可实现,具体哪个图形对应哪个字符,你在word里设定好Webdings字体后,输入键盘字符测试下就明白了:
[code] void IniBtnFont(void)
{
HFONT hFont= CreateFont(
20, //高度
20, //宽度
0, //旋转角度
0, //线条宽度
0, //下划线
DEFAULT_CHARSET, //字符集
OUT_DEFAULT_PRECIS, //精度
CLIP_DEFAULT_PRECIS, //剪裁方式
DEFAULT_QUALITY, //渲染质量
DEFAULT_PITCH or FF_DONTCARE, //字体族
&Webdings& //字体名
SendMessage(GetDlgItem(MainHwnd,IDC_BTNPLAY),WM_SETFONT,(WPARAM)hFont,0);
SendMessage(GetDlgItem(MainHwnd,IDC_BTNPAUSE),WM_SETFONT,(WPARAM)hFont,0);
SendMessage(GetDlgItem(MainHwnd,IDC_BTNSTOP),WM_SETFONT,(WPARAM)hFont,0);
SendMessage(GetDlgItem(MainHwnd,IDC_BTNJUMPBACK),WM_SETFONT,(WPARAM)hFont,0);
SendMessage(GetDlgItem(MainHwnd,IDC_BTNJUMPPREW),WM_SETFONT,(WPARAM)hFont,0);
SendMessage(GetDlgItem(MainHwnd,IDC_BTNPRE),WM_SETFONT,(WPARAM)hFont,0);
SendMessage(GetDlgItem(MainHwnd,IDC_BTNNEXT),WM_SETFONT,(WPARAM)hFont,0);
god13dog():
厉害~~~我想请问一下为什么我写的利用mcisendstring函数的音乐播放器在别人机器用不了呢?
头上长草():
解决方法:
1、选择菜单build-&Set Active Configuration,然后选择Release,
2、选择菜单project-&settings,在General选项卡里第一项选择Use MFC in a static Library,即静态连接
其实这就是生成了发布版程序,在Release目录下,可执行文件不会用到那两个讨厌的dll文件,这样在其他机器上也能用了。
请问对话框怎么弄成颜色的啊
29楼播放器疑问:
里面的快件,快退功能是摆设。怎么无法实现按钮的快件后退功能?
请完善并分享一下,
我们都要学呢。
TracyEos():
鹏友真是厉害啊 向你们好好学习
siyuan():
好,很好的学习气氛~~~~~~~~
siyuan():
源码拿走,多谢二位~~~~~~~~~~~~~
Tangly():
杨老师 真的是普渡众生啊! 顶杨老师
wq0-10-12):
啊,我什么时候也能做一个自己的播放器啊。。。爽歪歪一定。
wangrenxing424():
下下来看看哈
狠角色():
27楼那个好想还不是完整版吧,不过和我的那个有点互补的感觉,我那个可以添加多首歌曲,最小化到托盘,
但我写的时候代码有点乱,所以没好意思发。等过一久我整理好了再和大家共享一下,互相学习学习。
devil-11-28):
都是牛人啊
conan521():
好贴,留念
这张帖子真的太好了!顶你啊楼主!
真是太厉害了!学习了!
yehu_-28):
确实啊,好好学习楼主的播放器开发,谢谢楼主的源代码
什么啊!没有一个可以下载的!路径变了吗???
wx1-11-15):
为啥子不能下载妮?愁死洒家了。。。
小龙女种地瓜():
学习呀!自己编的没有进展!
悠尘缘():
为什么下载不了啊
xyer-25):
好东西,谢楼主。
永远的终点():
我最近才学的window编程,对音乐播放器还不是很了解,有没有哪位大哥有相应的学习做音乐播放器的资料,谢谢发到我的邮箱,[email][/email],我是个菜鸟,希望各位大虾指点。
rady-14):
真好啊。学习中啊。。哈哈。
永远的终点():
求指导如何用选中窗体的 WS_EX_ACCEPTFILES 风格
我打开资源编辑器后不懂如何调了,希望大虾指导,求图求真相
Skyline():
向你们学习啦!!!

我要回帖

更多关于 c语言背景音乐 的文章

 

随机推荐