如何播放MP3文件(在线等)
只用代码,而不用VC本身提供的那个播放器,如何播放MP3音乐??
[解决办法]
虽然mci确实很老了,而且xp下放midi问题多多,不过用起来确实很简单,以下转贴:
MCI命令是在mmsystem.h中define的整数,常用的命令有MCI_OPEN(打开设备)、MCI_PLAY(播放)、MCI_CLOSE(关闭设备)等,详细的命令信息请看MSDN,如果没有MSDN光盘可以到http://www.msdn.com查看。下面演示程序演示如何打开一个设备播放MP3文件。
MCI_OPEN_PARMS op;
op.dwCallback=NULL;
op.lpstrAlias=NULL;
op.lpstrDeviceType=_T( "MPEGAudio "); //设备类型,大多数文件可以这样设置
op.lpstrElementName=_T( "D:\\1.mp3 ") ;//文件路径
op.wDeviceID=NULL; //打开设备成功以后保存这个设备号备用
UINT rs; //接受函数返回结果
rs=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT ,(DWORD)&op);//发送命令打开设备,成功返回0,否则返回错误号,第三个参数这里必须
MCI_OPEN_ELEMENT
if(rs==0) //设备打开成功就播放文件
{
MCI_PLAY_PARMS pp;
pp.dwCallback=NULL;
pp.dwFrom=0; //开始播放的位置
mciSendCommand(op.wDeviceID,MCI_PLAY,MCI_WAIT,(DWORD)&pp);//播放文件,如果第三个参数设为MCI_WAIT则程序窗口会被阻塞,为了避免这种情况可以设为MCI_NOTIFY ,这两个标志的详细区别请见MSDN,区别不小哦。
}
最后别望了在WM_CLOSE消息处理过程中发送MCI_CLOSE命令关闭设备,写成这样:
MCI_GENERIC_PARMS gp;
gp.dwCallback=NULL;
mciSendCommand(op.wDeviceID,MCI_CLOSE,MCI_WAIT,(DWORD)&gp);
最后别忘了在工程属性的link属性页里加入winmm.lib链接,也不要忘了#include <mmsystem.h>