封装mciSendCommand的简单MCI类

    技术2022-05-20  39

    前阵子写了篇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();//销毁该对象


    最新回复(0)