在MFC下MCI的简单调用,封装成类

来源:互联网 发布:端口号是干嘛的 编辑:程序博客网 时间:2024/06/04 23:26
/*********************************************** *                    MCI.h                    * ***********************************************/#pragma once#include "mmsystem.h"class CMCI{private:MCIDEVICEID nDeviceID;public:CMCI(void);~CMCI(void);BOOL Open(CString strSongPath);BOOL Play();BOOL Pause();BOOL Stop();BOOL Close();BOOL GetCurrentPos(DWORD &pos);BOOL SetVolume(int nVolumeValue);};
/****************************************** *               MCI.cpp                  * ******************************************/#include "StdAfx.h"#include "MCI.h"#include "Digitalv.h"#pragma comment(lib,"winmm.lib")CMCI::CMCI(void){nDeviceID = -1;}CMCI::~CMCI(void){}//打开文件//成功返回非零值,失败返回0BOOL CMCI::Open(CString strSongPath){MCI_OPEN_PARMS mciOP;mciOP.lpstrDeviceType = NULL;mciOP.lpstrElementName = strSongPath;DWORD dwReturn = mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_WAIT | MCI_OPEN_SHAREABLE, (DWORD)(LPVOID)&mciOP);if(dwReturn == 0){nDeviceID = mciOP.wDeviceID;return TRUE;}else{nDeviceID = -1;return FALSE;}}//播放//成功返回非零值,失败返回0BOOL CMCI::Play(){MCI_PLAY_PARMS mciPP;DWORD dwReturn = mciSendCommand(nDeviceID, MCI_PLAY, MCI_NOTIFY, (DWORD)(LPVOID)&mciPP);if(dwReturn == 0)return TRUE;elsereturn FALSE;}//暂停播放//成功返回非零值,失败返回0BOOL CMCI::Pause(){MCI_GENERIC_PARMS mciGP;DWORD dwReturn = mciSendCommand(nDeviceID, MCI_PAUSE, MCI_NOTIFY | MCI_WAIT, (DWORD)(LPVOID)&mciGP);if(dwReturn == 0)return TRUE;elsereturn FALSE;}//停止播放并使进度返回到开头//成功返回非零值,失败返回0BOOL CMCI::Stop(){MCI_SEEK_PARMS mciSP;DWORD dwReturn = mciSendCommand(nDeviceID, MCI_SEEK, MCI_WAIT | MCI_NOTIFY | MCI_SEEK_TO_START, (DWORD)(LPVOID)&mciSP);if(dwReturn == 0)return TRUE;elsereturn FALSE;}//关闭MCI设备//成功返回非零值,失败返回0BOOL CMCI::Close(){MCI_GENERIC_PARMS mciGP;DWORD dwReturn = mciSendCommand(nDeviceID, MCI_CLOSE, MCI_NOTIFY | MCI_WAIT, (DWORD)(LPVOID)&mciGP);if(dwReturn == 0)return TRUE;elsereturn FALSE;}//获得当前播放进度,pos以ms为单位//成功返回非零值,失败返回0BOOL CMCI::GetCurrentPos(DWORD &pos){MCI_STATUS_PARMS mciSP;mciSP.dwItem = MCI_STATUS_POSITION;DWORD dwReturn = mciSendCommand(nDeviceID, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciSP);if (dwReturn == 0){pos = mciSP.dwReturn;return TRUE;}else{pos = 0;return FALSE;}}//音量设定,音量值范围在0到1000//成功返回非零值,失败返回0BOOL CMCI::SetVolume(int nVolumeValue){if(nVolumeValue > 1000){nVolumeValue = 1000;}else if(nVolumeValue < 0){nVolumeValue = 0;}MCI_DGV_SETAUDIO_PARMS mciDSP;mciDSP.dwItem = MCI_DGV_SETAUDIO_VOLUME;mciDSP.dwValue = nVolumeValue;DWORD dwReturn = mciSendCommand(nDeviceID, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE | MCI_DGV_SETAUDIO_ITEM, (DWORD)(LPVOID)&mciDSP);if(dwReturn == 0)return TRUE;elsereturn FALSE;}


 

原创粉丝点击