您的位置:首页 > 编程语言 > C语言/C++

VC 自己封装简单的播放音频MCI类库

2016-04-14 18:14 288 查看
参照网上的很多方法,然后自己封装了一个可以播放音频的一个简单的MCI类库,后面有时间会继续完善。

#ifndef __MUSICPLAY__
#define __MUSICPLAY__

/****************************************************************************
| 注册窗口句柄后可获得播放状态的消息 |
| MM_MCINOTIFY: |
| MCI_NOTIFY_SUCCESSFUL----播放完成消息 |
****************************************************************************/

#pragma once
#include "mmsystem.h"
#include <Digitalv.h>
#pragma comment(lib,"winmm.lib")
using namespace std;

class CMusicPlay
{
public:
CMusicPlay();
~CMusicPlay();

public:
/****************************************************************************
| 函数功能:界面调用此函数设置获取播放状态消息的窗口句柄 |
| 输入参数:hNotifyWindow :接收消息的窗口句柄 |
| 输出参数:无 |
| 返 回 值:无 |
| 说 明: |
****************************************************************************/
void setNotifyHwnd(HWND hNotifyWindow);

/****************************************************************************
| 函数功能:打开并分析新的音频文件 |
| 输入参数:strFile :文件路径 |
| 输出参数:无 |
| 返 回 值:1 : 无法打开指定文件 |
| 2 : 不支持文件格式 |
| 0 : 成功 |
| 说 明: |
****************************************************************************/
int OpenFile(CString strFile);

/****************************************************************************
| 函数功能:播放指定的文件 |
| 输入参数:strFile :文件路径 |
| 输出参数:无 |
| 返 回 值:1 : 无法打开指定文件 |
| 2 : 不支持文件格式 |
| 3 : 无法打开音频设备 |
| 4 : 参数不正确 |
| 5 : 无法启动播放线程 |
| 0 : 成功 |
| 说 明:停止当前播放,播放指定文件 |
****************************************************************************/
int play(CString strFile);

/****************************************************************************
| 函数功能:暂停当前播放 |
| 输入参数:无 |
| 输出参数:无 |
| 返 回 值:成功:TRUE 失败:FLASE |
| 说 明: |
****************************************************************************/
BOOL Pause();

/****************************************************************************
| 函数功能:继续当前播放 |
| 输入参数:无 |
| 输出参数:无 |
| 返 回 值:成功:TRUE 失败:FLASE |
| 说 明: |
****************************************************************************/
BOOL Resume();

/****************************************************************************
| 函数功能:停止当前播放 |
| 输入参数:无 |
| 输出参数:无 |
| 返 回 值:无 |
| 说 明: |
****************************************************************************/
void Stop();

/****************************************************************************
| 函数功能:获取播放的状态 |
| 输入参数:无 |
| 输出参数:无 |
| 返 回 值:播放的状态 |
| 说 明: |
****************************************************************************/
int GetStatus();

/****************************************************************************
| 函数功能:获取当前播放的音频文件路径 |
| 输入参数:无 |
| 输出参数:无 |
| 返 回 值:文件路径的指针 |
| 说 明: |
****************************************************************************/
CString GetMusicPath();

/****************************************************************************
| 函数功能:获取当前音频文件总的播放时间 |
| 输入参数:无 |
| 输出参数:无 |
| 返 回 值:总时间(单位:ms) |
| 说 明: |
****************************************************************************/
DWORD GetTotalTime();

/****************************************************************************
| 函数功能:获取当前音频文件播放进度 |
| 输入参数:无 |
| 输出参数:无 |
| 返 回 值:当前进度(单位:ms) |
| 说 明: |
****************************************************************************/
DWORD GetTimePostion();

/****************************************************************************
| 函数功能:使用完后关闭设备 |
| 输入参数:无 |
| 输出参数:无 |
| 返 回 值:无 |
| 说 明: |
****************************************************************************/
void CloseFile();

/****************************************************************************
| 函数功能:跳转到置顶时间位置进行播放 |
| 输入参数:dwTime :指定的时间位置(单位:ms) |
| 输出参数:无 |
| 返 回 值:无 |
| 说 明: |
****************************************************************************/
void PlayFrom(DWORD dwTime);

/****************************************************************************
| 函数功能:获取音量值 |
| 输入参数:无 |
| 输出参数:无 |
| 返回值: 音量值 |
| 说 明:音量分为0-100 |
****************************************************************************/
DWORD GetVolumn();

/****************************************************************************
| 函数功能:设置音量 |
| 输入参数:音量值 |
| 输出参数:无 |
| 返回值: 成功:TRUE 失败:FLASE |
| 说 明:音量分为0-100 |
****************************************************************************/
BOOL SetVolumn(DWORD dwVol);

private:
enum { PLAY = 0, PAUSE, STOP } m_fStatus;
MCIERROR mciError;
WORD m_wDeviceID;
CString m_strCurMusicPath;
HWND m_hNotifyWindow;
DWORD m_dwVolumn;

};

#endif

下载地址:https://github.com/RiKiYuu/MusicPlay.git
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息