使用函数前必须应该包含头文件:#include<mmsystem.h>
并导入库:#pragma comment<lib."winmm.lib">
mciSendString是用来播放多媒体文件的API指令,可以播放MPEG,AVI,WAV,MP3,等等
函数原型如下:
MCIERROR mciSendString(
LPCTSTR lpszCommand, //命令字符串:如 open、play 、close等
LPTSTR lpszReturnString, //接受返回信息的字符串 一般为NULL
UINT cchReturn, //返回字符串的大小
HANDLE hwndCallback //回调窗口句柄
);
该函数返回的错误码可以用mciGetErrorString函数进行分析,该函数的声明为:
BOOL mciGetErrorString(
DWORD fdwError, //错误代码
LPTSTR lpszErrorText, //接收错误描述信息
UINT cchErrorText //第二参数的大小
);
1、mciSendString函数播放mp3文件
其步骤为:打开----->>使用(播放、停止等)----->>关闭(不使用应该关闭)
例如打开当前工程下res文件中的mp3文件:
mciSendString(_T("open res\\和兰花在一起.mp3 alias music"),NULL,0,NULL);//打开文件
需要用到打开命令:open device_name type device_type alias device_alias
device_name:设备名,一般使用文件名字
type device_type:设备类型,可省略
alias device_alias:设备别名,在以后操作时可以使用此名字,方便
mciSendString(_T("play music repeat"),NULL,0,NULL);//重复播放
需要用到的播放参数: play device_alias from pos1 to pos2 wait repeat
devic_alias:含义同上
from pos1 to pos2:从指定的磁道播放到另一磁道,如果省略form pos1则从当前开始磁道播放;若省略to pos2 则播放至结束
wait:如果指定这关键,则函数只有等到播放完才返回
repea:决定是否重复播放
mciSendString(_T("close music"),NULL,0,NULL);//关闭音乐
2、mciSendCommand播放mp3文件
该函数与mciSendString函数不同,该函数是基于命令消息(定义的常量)的,而mciSendString函数的命令是基于字符串的
函数原型如下:
MCIERROR mciSendCommand(
MCIDEVICEID IDDevice, //设备的ID,打开是不用此参数
UINT uMsg, //命令消息,如:MIC_OPEN(与上述open字符串是等价的)
DWORD fdwCommand, //额外的命令标记,如:指定 MCI_OPEN_ALIAS 则表明dwParam参数所指结构体中的lpOpen参数指向的为别名;若为MCI_OPEN_ELEMENT则表明lpOpen参数指向的为文件名
DWORD_PTR dwParam //为一结构指针,如:MCI_OPEN_PARMS(打开是所需的结构体)、MCI_PLAY_PARMS(播放是所需的结构体)、MCI_GENERIC_PARMS(结束时所需的结构体)
);
MCI_OPEN_PARMS open;//定义打开结构体变量
open.lpstrElementName = _T("res\\和兰花在一起.mp3");//填充参数
mciSendCommand(0,MCI_OPEN,MCI_OPEN_ELEMENT,DWORD_PTR(&open));//打开
MCI_PLAY_PARMS play;//定义播放结构题变量
mciSendCommand(open.wDeviceID,MCI_PLAY,MCI_WAIT,DWORD_PTR(&play));//播放,此处是阻塞模式,播放完后才返回。也可以指定为0
//////////////////////////////////////////////当不需要播放时,关闭
MCI_GENERIC_PARMS close;
mciSendCommand(DeviceID,MCI_CLOSE,0,DWORD_PTR(&close));
DeviceID与打开时的ID一致
这种方式和上面的播放是一样的作用,但效率要高些
关于mciSendString 和 mciSendCommand函数的其他使用情况,以及windows多媒体库winmm.h中相关函数参考一下网站:
http://baike.baidu.com/view/1622810.htm
http://blog.163.com/guobin0517@126/blog/static/50841978201092974353636/
http://baike.baidu.com/view/4189925.htm
http://baike.baidu.com/view/2089748.htm
http://baike.baidu.com/link?url=w55fEX2t7hLA3q8b7dH6W47dW6qSljkujum1kScPUgtCjgv3F1lzfmkiHVWQa-Ly(其他相关函数)
联系客服