参照网上的很多方法,然后自己封装了一个可以播放音频的一个简单的MCI类库,后面有时间会继续完善。
#ifndef __MUSICPLAY__
#define __MUSICPLAY__
/****************************************************************************
| 注册窗口句柄后可获得播放状态的消息 |
| MM_MCINOTIFY: |
| MCI_NOTIFY_SUCCESSFUL----播放完成消息 |
****************************************************************************/
#pragma once
#include "mmsystem.h"
#include
#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