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

参照网上的很多方法,然后自己封装了一个可以播放音频的一个简单的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


你可能感兴趣的:(C++)