封装mciSendCommand的简单MCI类
2011-03-02 09:30
316 查看
前阵子写了篇mciSendCommand简介的文章,大家看得比较多,说明大家需要这方面的东西哈。今天有空写了个简单的MCI类给大家贴出来。这个类很简单,只实现了简单的文件打开、播放、暂停、继续、关闭几个功能,供大家学习研究哈。如果哪位高手把这个类扩展了也请给我一份哈,以备不时之需哈。 这个类必须在MFC支持下才能使用,因为用了MFC 的CString。请在编译的时候链接上winmm.lib 类的代码如下: //////////////////////////// //CMCI.h ////////////////////////////////////////////////////// #include <mmsystem.h> class CMCI { public: void Resume(); void Pause(); void Close(); void Play(UINT From,UINT To); UINT m_iDeviceType; CMCI(CString FilePath,CString DeviceType); virtual ~CMCI(); }; //////////////////////// //cMCI.cpp ///////////////////////////// #include "cMCI.h" CMCI::CMCI(CString FilePath,CString DeviceType="MPEGAudio") { MCI_OPEN_PARMS pm; pm.dwCallback=NULL; pm.lpstrAlias=NULL; pm.lpstrDeviceType=DeviceType; pm.lpstrElementName=FilePath; pm.wDeviceID=NULL; if(0==mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)&pm)) { this->m_iDeviceType=pm.wDeviceID; } } CMCI::~CMCI() { if(this->m_iDeviceType) Close(); } void CMCI::Play(UINT From, UINT To) { MCI_PLAY_PARMS pm; pm.dwCallback=0; pm.dwFrom=From; pm.dwTo=To; if(!this->m_iDeviceType) return; mciSendCommand(this->m_iDeviceType, MCI_PLAY, MCI_NOTIFY, (DWORD)&pm); } void CMCI::Close() { if(this->m_iDeviceType) { MCI_GENERIC_PARMS gp; gp.dwCallback=NULL; mciSendCommand(this->m_iDeviceType, MCI_CLOSE, MCI_WAIT, (DWORD)&gp); this->m_iDeviceType=NULL; } } void CMCI::Pause() { if(this->m_iDeviceType ) { MCI_GENERIC_PARMS gp; gp.dwCallback=NULL; mciSendCommand(this->m_iDeviceType, MCI_PAUSE, MCI_WAIT, (DWORD)&gp); } } void CMCI::Resume() { if(this->m_iDeviceType ) { MCI_GENERIC_PARMS gp; gp.dwCallback=NULL; mciSendCommand(this->m_iDeviceType, MCI_RESUME, MCI_WAIT, (DWORD)&gp); } } 这个类的用法: 1、在CXXDlg.h中加入成员变量 CMCI *mymci; 2、在某个消息中构建CMCI的实例并播放文件 CString str1="e://1.mp3";//路径 mymci=new CMCI(str1);//构建对象实例 mymci->Play();//调用方法 3、在适当的时候(通常是程序退出)关闭对象 mymci->Close(); 请注意,不要在堆栈中写这样的代码: CMCI mci; mci.Play() 这样并不会播放某个文件,因为在这段代码结束的时候,刚才定义的对象已经释放销毁了。 成员列表: void Resume(); //继续播放 void Pause();//暂停播放 void Close();//关闭该对象(文件) void Play(UINT From,UINT To);//开始播放 UINT m_iDeviceType;//该文件(对象)的mciSendCommand中的MciDevice CMCI(CString FilePath,CString DeviceType);//构造器,初始化该对象(文件) virtual ~CMCI();//销毁该对象 |
相关文章推荐
- MFC-添加背景音乐(2)-封装了mciSendCommand的简单MCI类
- MFC-添加背景音乐(2)-封装了mciSendCommand的简单MCI类 .
- [C#] 简单的 Helper 封装 -- SQLiteHelper
- 封装了一个简单的注册表操作类
- 简单封装PagerAdapter以支持多种类型的视图
- BaseActivity与BaseFragment的简单封装
- 对commons fileupload组件的简单封装
- 对mysql的简单封装
- excelpanel--extjs中嵌入excel,并封装简单操作
- 多光驱控制的简单功能的简单封装。
- Android简单封装类似JQuery异步请求
- 【SSH进阶之路】一步步重构容器实现Spring框架——彻底封装,实现简单灵活的Spring框架(十一)
- java jdbc数据库连接简单封装
- 我封装的一个ADO类,使用超简单!
- 系统封装教程---之几种常用封装工具和驱动包的简单介绍
- 简单文件上传函数的封装(PHP)
- 对commons fileupload组件的简单封装
- 自己简单封装spring容器
- windows 下批处理修改 计算机名 用于系统封装或虚拟化简单模板
- 封装的简单支付 微信支付宝