欢迎来我的个人网站:http://www.rxwcv.cn

使用MCI API,源文件中需要包含头文件 Mmsystem.h,在Project->Settings->Link->Object/libray module中加入库 Winmm.lib。 VS2008在源文件加上#include "mmsystem.h"      #pragma comment(lib,"winmm.lib")

mciSendString是用来播放多媒体文件的API指令,可以播放MPEG,AVI,WAV,MP3,等等,下面介绍一下它的使用方法:

  该函数有四个参数:
第一个参数:要发送的命令字符串。字符串结构是:[命令][设备别名][命令参数].
第二个参数:返回信息的缓冲区,为一指定了大小的字符串变量.
第三个参数:缓冲区的大小,就是字符变量的长度.
第四个参数:回调方式,一般设为零
返回值:函数执行成功返回零,否则返回错误代码
MCIERROR mciSendString(

      LPCTSTR lpszCommand,    //MCI命令字符串

      LPTSTR lpszReturnString, //存放反馈信息的缓冲区

      UINT  cchReturn,     //缓冲区的长度

      HANDLE hwndCallback    //回调窗口的句柄,一般为NULL

    ); //若成功则返回0,否则返回错误码。

  该函数返回的错误码可以用mciGetErrorString函数进行分析,该函数的声明为:

    BOOL mciGetErrorString(

      DWORD fdwError,   //函数mciSendString返回的错误码

      LPTSTR lpszErrorText, //接收描述错误的字符串的缓冲区

      UINT  cchErrorText  //缓冲区的长度

    );

一,打开多媒体文件。
    首先在Dialog上面放一个Picture控件,MCISendString就在这个Picture控件的平面上播放多媒体文件,
设Picture控件的ID为IDC_STATIC1:
CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC1);HWND h=pStatic->GetSafeHwnd();
CString open1;
char buf[256];
open1.Format("open f:""mpeg""mpeg1.avi type MPEGVideo Alias movie parent %u Style %u notify",              h,WS_CHILD);
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。
    二,播放多媒体文件。
    上面我们已经打开了f:"mpeg"mpeg1.avi,现在我们来播放它:
mciSendString("play movie",buf,sizeof(buf),NULL);
    如果想全屏播放:
mciSendString("play movie fullscreen",buf,sizeof(buf),NULL);

三,暂停播放。
mciSendString("pause movie",buf,sizeof(buf),NULL);
    四,停止播放。
mciSendString("close movie",buf,sizeof(buf),NULL);
    五,得到所播放文件的长度。
char sPosition[256];long lLength;
ciSendString("Status movie length", sPosition, 255,0);lLength=strtol(sPosition, NULL, 10);
其中lLength就是所播放文件的长度。
    六,得到所播放文件的声音大小。
char chVolume[256];long lVolume;mciSendString("status movie volume",chVolume,255,0);lVolume=strtol(chVolume,NULL,10);其中lVolume就是所播放文件的声音大小。
    七,到你指定的位置播放。
CString step1;long lPosition;
lPosition=100;
step1.Format("seek movie to %ld",lPosition);
mciSendString(step1.GetBuffer(step1.GetLength()),buf,sizeof(buf),0);
其中lPosition就是要到的播放位置,可以由你指定。

首先在初始化中,设定滑块的一些参数

SendMessage(GetDlgItem(hwnd,IDC_SOUND_SLIDER),TBM_SETRANGEMIN,(WPARAM)TRUE,0);//设定最小值

SendMessage(GetDlgItem(hwnd,IDC_SOUND_SLIDER),TBM_SETRANGEMAX,(WPARAM)TRUE,1000);//设定最大值

SendMessage(GetDlgItem(hwnd,IDC_SOUND_SLIDER),TBM_SETPOS,(WPARAM)TRUE,0);//设定当前的滚动值

SendMessage(GetDlgItem(hwnd,IDC_SOUND_SLIDER), TBM_SETPAGESIZE, 0, (LPARAM)100);//设置 PAGE UP or PAGE DOWN key的进度

SendMessage(GetDlgItem(hwnd,IDC_SOUND_SLIDER), TBM_SETLINESIZE, 0, (LPARAM)100); //设置RIGHT ARROW or DOWN ARROW key的进度

然后响应WM_VSCROLL或WM_HSCROLL消息

添加如下代码:

if(LOWORD(wParam)==TB_THUMBPOSITION||LOWORD(wParam)==TB_LINEUP||LOWORD(wParam)==TB_LINEDOWN||

LOWORD(wParam)==TB_PAGEDOWN||LOWORD(wParam)==TB_PAGEUP)

{

SetAudioVoice(hWnd);//写个设置声音的函数

}//当然你可以逐个控制这些数值

在SetAudioVoice中:

int volume=1000-(SendMessage(GetDlgItem(hWnd,IDC_SOUND_SLIDER),TBM_GETPOS,0,0));//由于我用的是垂直滑块,向上滚动

滚动数值是减小的,所以我要想实现向上滚动增加音量,向下滚动减小音量,必须用滑块的最大值1000减去当前的滚动值

最后是设置声音

wsprintf(szVolume,"setaudio %s volume to %d",shortPath,volume);

mciSendString(szVolume,"",0,NULL);

欢迎来我的个人网站:http://www.rxwcv.cn

转载于:https://www.cnblogs.com/Hewie/p/3434920.html

mciSendString用法相关推荐

  1. c语言mcisendstring函数,mciSendString用法

    使用MCI API,源文件中需要包含头文件 Mmsystem.h,在Project->Settings->Link->Object/libray module中加入库 Winmm.l ...

  2. MFC学习笔记 — 看小白如何实现音乐播放器(USB-HID 声卡 wav播放)

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX  作       者:文化人 XX  联系方式:(或进群:471144 ...

  3. 做个mp3播放器mciSendString()用法【转】

    做个mp3播放器,用realplay和WMP做出来的程序内存占用太大. 如果你仅仅是播放MP3,建议使用API函数mciSendString,我把该函数的详细资料罗列如下供你参考. Option Ex ...

  4. mciSendString函数简介(播放音乐以及录音相关操作)

    函数功能:播放多媒体音乐,视频等 mciSendString是用来播放多媒体文件的API指令,可以播放MPEG,AVI,WAV,MP3,等等.这个函数有自己的mci指令,可以通过不同的指令实现不同的功 ...

  5. C++播放音乐和MFC的messagebox用法

    C++播放音乐 和MFC messagebox()函数不能使用的问题 文章目录 C++播放音乐 和MFC messagebox()函数不能使用的问题 前言 一.使用mciSendString播放音乐 ...

  6. c语言编写音乐播放器完整代码(mciSendString函数的使用方法,第一次使用Visual Studio 2019的详细步骤)

    本文会尽量让和笔者一样只有一点点可怜的c语言基础的小白看懂,并写出自己的音乐播放器. 笔者使用的编译器是Visual Studio 2019,直接在官网下载就行了.下面是Visual Studio 2 ...

  7. System.Diagnostics.Process.Start 用法

    Process.Start()方法详解_System.Diagnostics.Process.Start()的用法 ,转 System.Diagnostics.Process.Start(); 能做什 ...

  8. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  9. Pandas_transform的用法

    先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...

最新文章

  1. Java 实现滑动时间窗口限流算法,你见过吗?
  2. mysql为什么没有nvarchar,关于mysql:为什么不将每个VARCHAR指定为VARCHAR(65535)?
  3. SecureCRT录制的安卓电视切换台脚本
  4. python 整数逆位运算_Python 进制转换、位运算
  5. golang——strconv包常用函数
  6. 切换到 oracle的 hr用户下面练习
  7. [编程手记小技巧]自定义调试信息宏及gcc技巧
  8. 分级时间轮优化普通时间轮定时器(2):滴答式分层计时轮
  9. 印地语自由对话语音识别数据库-200人
  10. 小黑小波比.Ubuntu14.04安装ffmpeg以及使用ffmpeg
  11. NB-Iot烟感02:NB-IOT概念和技术特点
  12. 游程编码解密(C语言详解)
  13. “踢群第一案”上热搜的背后
  14. admob html5,admob移动广告phonegap插件使用教程
  15. 低通滤波器计算截止评率_科普文|一文了解电阻-电容(RC)低通滤波器
  16. [Python]经典例题——解一元二次方程
  17. 网页端实现大尺寸图片的查看、放大缩小、标记标尺等功能
  18. SpringBoot:Sa-Token的具体介绍与使用
  19. 一个程序员的奋斗历程(偶像程序员)
  20. unity5.5之NGUI制作动态字体

热门文章

  1. 03-老马jQuery教程-DOM操作(上)
  2. Informatica如何利用数据3.0助力业务
  3. Win7安装visual c++ 2015 redistributable x64失败
  4. solr/solrj原子更新
  5. 惨!重新申请了网页的Counter
  6. python中prettytable模块_Python库: PrettyTable 模块
  7. git clone错误 fatal: early EOF fatal: index-pack failed
  8. 【BZOJ1022】小约翰的游戏(博弈论)
  9. UWP 查找模板中的控件
  10. 控制台输入与Math Random的基本使用