只用代码,而不用VC本身提供的那个播放器,如何播放MP3音乐??
解决方案 »
- 在VS2010中向access中存入数据是遇到的问题
- 怎样使view的子窗体总是获得焦点
- 请问vista下的错误报告怎么看?
- VC++如何读取存储数据类型为BYTE的二进制文件?
- 请教:SetDlgItemText方面的一个问题
- 一个程序 得疑问多线程得。
- 请教用VC++6.0怎样实现数据滤波,进者有分!!!!
- 打开工程提示“cannot access the classView information file.classview information willnot be avaiable”,怎么解决?
- 请问在如何注销指定用户
- 关于com中变量保存的问题。
- 新手问ActiveX:用class widzard添加鼠标单击事件Click后,我在哪里添加自己的处理代码
- error C2065: 'CAboutDlg' : undeclared identifier
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>