#ifndef _SAMPLE_WAVEOUTDEVICE_HPP_ #define _SAMPLE_WAVEOUTDEVICE_HPP_ #ifndef _COMMON_WINDOW_HPP_ #include #endif #ifndef _COMMON_GLOBALDATA_HPP_ #include #endif #ifndef _SAMPLE_DEVICEHANDLER_HPP_ #include #endif #ifndef _SAMPLE_WAVEOUTCAPS_HPP_ #include #endif #ifndef _SAMPLE_WAVEHEADER_HPP_ #include #endif #ifndef _SAMPLE_WAVEFORM_HPP_ #include #endif #ifndef _SAMPLE_WAVEFORMATPCM_HPP_ #include #endif class WaveOutDevice : public DeviceHandler { public: WaveOutDevice(UINT waveDeviceID,Window &windowHander); WaveOutDevice(const WaveOutDevice &someWaveOutDevice); virtual ~WaveOutDevice(); WaveOutDevice &operator=(const WaveOutDevice &someWaveOutDevice); BOOL play(WaveForm &waveForm,DeviceHandler::PlayMode playMode=DeviceHandler::NoWait); BOOL pause(void); BOOL restart(void); protected: virtual void openHandler(CallbackData &someCallbackData); virtual void closeHandler(CallbackData &someCallbackData); virtual void doneHandler(CallbackData &someCallbackData); virtual void message(const String &strErrorMessage)const; private: enum Disposition{InPause,InPlay,InClose,InOpen,InIdle}; BOOL openDevice(WaveFormatPCM &waveFormatPCM); BOOL closeDevice(void); void unprepareHeader(void); WaveOutCaps mWaveOutCaps; Window &mWindowHandler; UINT mWaveDeviceID; GlobalData mGlobalWaveHeader; HWAVEOUT mhWaveOut; Disposition mDisposition; }; #endif