mciSendString
函数
mciSendString,函数。
头文件
#include
函数原型简介
mciSendString(发送命令串),函数原型为:
MCIERROR mciSendString( // 出错返回非零值(错误代码
// 可用mciGetErrorString获得错误的文本描述
LPCTSTR lpszCommand, // 指向以null结尾的命令字符串:”命令 设备[ 参数]”
LPTSTR lpszReturnString,// 指向接收返回信息的缓冲区,为NULL时不返回信息
UINT cchReturn, // 上述缓冲区的大小
HANDLE hwndCallback // 在命令串中含notify时,它指定一个回调窗口的句柄
// 一般为NULL
);
MCI函数中还有一个只适用于命令串接口的函数为mciExcute,mciExcute(执行)是mciSendString的简化形式:
BOOL mciExcute(LPCTSTR lpszCommand); // 成功返回TRUE
该函数只有Win16支持,Win32不支持,可自写一函数实现:
BOOL mciExcute(LPCTSTR lpszCommand) {
if (mciSendString(lpszCommand, NULL, 0, NULL)) return FALSE;
return TRUE;
}
官方文档
The mciSendString function sends a command string to an MCI device. The device that the command is sent to is specified in the command string. (这个mciSendString函数发送一个指令字符串到一个MCI设备, 指令发送的设备在这个指令字符串中被指定.)
更多信息, 请参照微软官方文档.
函数原型
MCIERROR mciSendString( LPCTSTR lpszCommand, LPTSTR lpszReturnString, UINT cchReturn, HANDLE hwndCallback);
差异比较
mciSendString与mciExecute都是常用的执行MCI指令的函数, 在使用mciSendString执行时, 如若遇到异常, 仅会返回一个错误码, 而mciExecute还会弹出一个窗口.
所以, mciSendString常用于程序的最终发布版本, mciExecute由于会弹出窗口, 所以很少在发布版本中使用, 反而在调试版本中常用, 因为弹出窗口中会包含错误信息, 易于调试.
使用方法
简略概述
mciSendString是用来播放多媒体文件的API指令,可以播放MPEG,AVI,WAV,MP3,等等,下面我们来介绍一下它的使用方法:
一,打开多媒体文件。
首先在Dialog上面放一个Picture控件,MCISendString就在这个Picture控件的平面上播放多媒体文件,
设Picture控件的ID为IDC_STATIC1:
CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC1);HWND h=pStatic->GetSafeHwnd();
CString open1;
char buf[256];
mciSendString(open1.GetBuffer(open1.GetLength()),buf,sizeof(buf),NULL);
这样F盘下面的mpeg目录下的mpeg1.avi就打开了,其中的type MPEGVideo是指打开MPEG,AVI等类型,如果不加type MPEGVideo这一句,就是打开WAV,MP3等,Alias movie定义了mpeg1.avi的别名为movie,以后可以通过操作movie就可以操作mpeg1.avi。
二,播放多媒体文件
如果想全屏播放:
三,暂停播放。
四,停止播放。
五,得到所播放文件的长度。
char sPosition[256];long lLength;
strtol(sPosition, NULL, 10);
其中lLength就是所播放文件的长度。注意:该长度单位是毫秒。
六,得到所播放文件的声音大小。
char chVolume[256];long lVolume;mci
七,到你指定的位置播放。
CString step1;long lPosition;
lPosition=100;
mciSendString(step1.GetBuffer(step1.GetLength()),buf,sizeof(buf),0);
其中lPosition就是要到的播放位置,可以由你指定。
详细内容
参考文章: mciSendString 和 mciSendCommand 函数的简单使用
程序示例
命令串
1)CD
wchar_t buf[256];
if (err) {
if (mciGetErrorString(err, buf, 256))
return;
}
m_nTracks = wcstol(buf, NULL, 10); // 这里使用了宽字符版的字符串到整数的
// 转换函数:long wcstol( const wchar_t *nptr, wchar_t **endptr, int base );
mciSendString(buf, NULL, 0, NULL); // 从音轨m_nFrom头播放到音轨m_nTo–1尾
其他常用命令:
// 轨(<100):分(<100):秒(<60):帧(<75),一秒=75块,一块=98帧
注意:
2)WAV
wchar_t buf[256];
MCIERROR err = mciSendString(buf, NULL, 0, NULL);
if (err) {
if (mciGetErrorString(err, buf, 256)) MessageBox(buf, L“Error”);
return;
}
// t1和t2为用户指定的起止时间(单位为秒,浮点变量)
DWORD start = (DWORD)(t1 * 1000 + 0.5), end = (DWORD)(t2 * 1000 + 0.5);
mciSendString(buf, NULL, 0, NULL);
其他常用命令:
3).MP3
下面看一个播放mp3音乐的简单示例:
该函数还可以播放avi视频等。
参考资料
最新修订时间:2024-10-30 08:25
目录
概述
头文件
函数原型简介
参考资料