只用代码,而不用VC本身提供的那个播放器,如何播放MP3音乐??

解决方案 »

  1.   

    http://blog.csdn.net/Y___Y/archive/2007/05/22/1621050.aspx
      

  2.   

    虽然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>