资源描述:
《mci播放mp3音频文件例程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MCI播放mp3音频文件例程源文件中需要包含头文件Mmsystem.h,在Project->Settings->Link->Object/libraymodule中加入库Winmm.lib。或添加代码#pragma comment(lib,"winmm.lib")MCI_OPEN_PARMSop;voidCMCIDlg::OnPlay(){ //TODO:Addyourcontrolnotificationhandlercodehere DWORDcdlen;//音频文件长度 op.dwCallback=NULL; op.lpstrAlias=NULL; op.lpstrDev
2、iceType=_T("MPEGAudio"); //设备类型,大多数文件可以这样设置 op.lpstrElementName=_T("D:\2.mp3C:DocumentsandSettingsAllUsersDocumentsMyMusic示例音乐"); //文件路径 op.wDeviceID=NULL; //打开设备成功以后保存这个设备号备用 UINTrs; //接受函数返回结果 //发送命令打开设备,成功返回0,否则返回错误号,第三个参数这里必须MCI_OPEN_ELEMENT rs=mciSendCommand(NULL,MCI_
3、OPEN,MCI_OPEN_ELEMENT,(DWORD)&op);mciSendCommand(op.wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD)&pp); mciSendCommand(NULL,MCI_SET,MCI_SET_DOOR_OPEN,NULL); cdlen=getinfo(op.wDeviceID,MCI_STATUS_LENGTH);//获取音频文件长度 if(rs==0) //设备打开成功就播放文件 { MCI_PLAY_PARMSpp; pp.dwCallback=NULL; pp.dwFrom=0;
4、 //开始播放的位置 mciSendCommand(op.wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD)&pp); //播放文件,如果第三个参数设为MCI_WAIT则程序窗口会被阻塞,为了避免这种情况可以设为MCI_NOTIFY } Sleep(cdlen);//根据文件长度等待,与MCI_WAIT效果一样,cdlen参数可以控制播放时间 OnStop(); //关闭音频文件 }DWORDCMCIDlg::getinfo(UINTwDeviceID,DWORDitem){ MCI_STATUS_PARMSmcistatuspar
5、ms; mcistatusparms.dwCallback=(DWORD)GetSafeHwnd(); mcistatusparms.dwItem=item; mcistatusparms.dwReturn=0; mciSendCommand(wDeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)&mcistatusparms); returnmcistatusparms.dwReturn;}voidCMCIDlg::OnStop(){ //TODO:Addyourcontrolnotificationhandlercodehere //在WM_
6、CLOSE消息处理过程中发送MCI_CLOSE命令关闭设备 MCI_GENERIC_PARMSgp; gp.dwCallback=NULL; mciSendCommand(op.wDeviceID,MCI_CLOSE,MCI_WAIT,(DWORD)&gp); } ==============================================================================================加入音乐是增强应用程序功能的所有方法中最简单的一个。几乎每个计算机游戏或多媒体程序都以某种MIDI或CD音乐为背景。音乐可以使用户
7、心情愉快;在合适的场合播放恰当的音乐能够使程序员和他的VC++程序焕发光彩。第一部分MIDI的播放乐器数字化接口(MIDI)是由音乐界的一些大公司(包括生产电子音乐合成器的公司)制订的一项协议,后来被计算机产业所采用并成为多媒体音乐文件的标准格式。MIDI文件一般较小,对硬件设备的要求高。一、原理虽然MicroSoft支持MIDI文件,然而VisualC++或MFC并没有创建任何组件来实现这种支持,但是MicroSoftAPI提供了三种不同的方法来实现MIDI的播放:MCI(Th