mciSendCommand函数使用

函数原型:
MCIERROR mciSendCommand(
MCIDEVICEID wIDDevice,
UINT uMsg,
DWORD fdwCommand,
DWORD dwParam
); //若成功则返回0,否则返回错误码

wIDDevice 设备的ID,在打开设备时不用该参数
uMsg命令 消息
fdwCommand命令 消息的标志
dwParam 指向包含命令消息参数的结构
1.打开设备:

MCI_OPEN_PARMS open;
open.lpstrDeviceType=NULL;
open.lpstrElementName=L"e:\\1.mp3";
mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)&open);

2.播放设备:

UINT wdd;
MCI_PLAY_PARMS play;
PLAY.dwFrom = 0;//指定开始播放的位置,单位ms
wdd = open.wDeviceID;//wdd储存设备id
mciSendCommand(wdd, MCI_PLAY, MCI_FROM, (DWORD)&PLAY);

/第三个参数指定为MCI_FROM时,函数在播放声音后立即返回,指定为MCI_WAIT时,当声音播完后才会返回,在此期间程序不会往下执行。/
3.关闭设备:
mciSendCommand(m_wDeviceID,MCI_CLOSE,NULL,NULL);
/第一个参数指定已打开的设备,第二个参数指定为MCI_CLOSE,其他参数设为NULL/

4.暂停播放:

mciSendCommand(m_wDeviceID,MCI_PAUSE,MCI_FROM,(DWORD)&play);//MCI_PAUSE指定设备暂停播放

5.继续播放:

mciSendCommand(m_wDeviceID, MCI_RESUME, MCI_FROM, (DWORD)&play);//MCI_RESUME指定被暂停的设备继续播放

6.停止播放:

mciSendCommand(m_wDeviceID, MCI_STOP, MCI_FROM, (DWORD)&play);//MCI_STOP指定设备停止播放

7.获取设备播放信息:

MCI_STATUS_PARMS status;
status.dwItem = MCI_STATUS_MODE;
mciSendCommand(WDD, MCI_STATUS, MCI_WAIT | MCI_STATUS_ITEM, (DWORD)&status);
cout << status.dwReturn<<endl;
/*dwReturn获取返回值,在上面的代码中,status.dwReturn返回当前的播放状态,如果是播放则返回526,暂停状态返回529*/

下面是可为dwItem指定的属性:
MCI_STATUS标志
MCI_STATUS_LENGTH 获得文件长度
MCI_STATUS_MODE 获得文件播放的当前状态
MCI_STATUS_POSITION 获得文件播放的当前位置
MCI_STATUS_TIME_FORMAT 获得当前的时间格式
MCI_SEQ_STATUS_DIVTYPE 判断文件是PPQN类型还是SMPTE类型
MCI_SEQ_STATUS_TEMPO 获得当前播放速度,PQRN类型,
此值为节拍/分,SMPTE类型,此值为祯/秒

8.设置时间格式及播放速度:

MCI_SET_PARMS SetParms;
SetParms.dwTimeFormat = MCI_FORMAT_MILLISECONDS;
//设置时间单位为毫秒
mciSendCommand (m_wDeviceID,
MCI_SET, MCI_SET_TIME_FORMAT,
(DWORD)(LPVOID) &SetParms);

9.跳转:

MCI_SEEK_PARMS SeekParms;
SeekParms.dwTo = (nMinute * 60 + nSecond) * 1000;
//跳转的目标时间,时间单位为毫秒
mciSendCommand (m_wDeviceID,MCI_SEEK,MCI_TO|MCI_WAIT,(DWORD)(LPVOID)
&SeekParms);
//跳到文件头
mciSendCommand(m_wDeviceID,MCI_SEEK,MCI_SEEK_TO_START, NULL);
//跳到文件尾
mciSendCommand (m_wDeviceID,MCI_SEEK,MCI_SEEK_TO_END, NULL);
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值