WaveOut.h
上传用户:goak128
上传日期:2013-07-17
资源大小:155k
文件大小:2k
- //////////////////////////////////////////////////////////////////////////
- // class CWaveOut
- //
- // 功能: 语音播放的基类
- // 创建人: 陈文凯 (chwkai@gmail.com)
- // 创建日期:2005年5月19日
- // 修改人:
- // 修改日期:
- // 版本
- #ifndef _WAVEOUT_H_
- #define _WAVEOUT_H_
- #include <MMSystem.h> // 包含音频处理API
- #include "WaveFile.h"
- //////////////////////////////////////////////////////////////////////////
- // 负责音频输出
- class CWaveOut
- {
- public:
- CWaveOut(void);
- ~CWaveOut(void);
- protected:
- //////////////////////////////////////////////////////////////////////////
- // 打开输出设备,设置回调窗口,初始化参数
- virtual BOOL Init(
- WAVEFORMATEX fmt, /*wave format信息*/
- DWORD hWnd /*回调窗口*/
- );
-
- //////////////////////////////////////////////////////////////////////////
- // 关闭输出设备
- void CloseDev();
- //////////////////////////////////////////////////////////////////////////
- // 回收资源,派生类中实现分配资源的释放
- virtual void Dispose();
- public:
- //////////////////////////////////////////////////////////////////////////
- // 修改当前状态为playing。派生类中实现第一个裸音频块的发送
- virtual void Start();
- //////////////////////////////////////////////////////////////////////////
- // 暂停播放,修改状态为paused
- void Pause();
- //////////////////////////////////////////////////////////////////////////
- // 恢复播放,修改状态为playing
- void Resume();
- //////////////////////////////////////////////////////////////////////////
- // 停止播放。派生类中实现WAVEHDR的Unprepare
- virtual void Stop();
- //////////////////////////////////////////////////////////////////////////
- // 处理WOM_DONE消息,继续播放下一个缓冲块
- virtual LRESULT OnDone(DWORD dwParam) = 0;
- private:
- //////////////////////////////////////////////////////////////////////////
- // 是否存在可用的输出设备
- BOOL IsDevAvailable() const;
- protected:
- WAVEFORMATEX m_format; // wave的格式
- HWAVEOUT m_hWaveOut; // 所打开的输出设备的句柄
- private:
- DWORD m_hWnd; // 保存回调窗口的句柄
- BOOL m_bPaused; // 当前状态是否暂停播放
- BOOL m_bPlaying; // 当前状态是否为正在播放
- };
- #endif /*_WAVEOUT_H_*/