#ifndef _SAMPLE_WAVEINDEVICE_HPP_ #define _SAMPLE_WAVEINDEVICE_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_GLOBALDATA_HPP_ #include #endif #ifndef _SAMPLE_WAVEINCAPS_HPP_ #include #endif #ifndef _SAMPLE_WAVEHEADER_HPP_ #include #endif #ifndef _SAMPLE_WAVEFORM_HPP_ #include #endif #ifndef _SAMPLE_DEVICEHANDLER_HPP_ #include #endif #ifndef _SAMPLE_WAVEFORMATPCM_HPP_ #include #endif class WaveInDevice : public DeviceHandler { public: WaveInDevice(UINT waveDeviceID,Window &windowHandler); WaveInDevice(const WaveInDevice &someWaveInDevice); virtual ~WaveInDevice(); WaveInDevice &operator=(const WaveInDevice &someWaveInDevice); WORD record(WaveForm &waveForm); protected: virtual void openHandler(CallbackData &someCallbackData); virtual void closeHandler(CallbackData &someCallbackData); virtual void doneHandler(CallbackData &someCallbackData); virtual void message(const String &strErrorMessage)const; private: WORD openDevice(WaveFormatPCM &waveFormatPCM); WORD closeDevice(void); UINT mWaveDeviceID; GlobalData mGlobalWaveHeader; WaveInCaps mWaveInCaps; HWAVEIN mhWaveIn; Window &mWindowHandler; }; inline WaveInDevice::WaveInDevice(UINT waveDeviceID,Window &windowHandler) : mWaveDeviceID(waveDeviceID), mhWaveIn(0), mGlobalWaveHeader(1,GMEM_MOVEABLE|GMEM_ZEROINIT), mWindowHandler(windowHandler), DeviceHandler(windowHandler) { ::waveInGetDevCaps(mWaveDeviceID,&((WAVEINCAPS&)mWaveInCaps),sizeof(mWaveInCaps)); } inline WaveInDevice::WaveInDevice(const WaveInDevice &someWaveInDevice) : mWaveDeviceID(someWaveInDevice.mWaveDeviceID), mGlobalWaveHeader(1,GMEM_MOVEABLE|GMEM_ZEROINIT), mhWaveIn(0), mWindowHandler(someWaveInDevice.mWindowHandler), DeviceHandler(someWaveInDevice.mWindowHandler) { *this=someWaveInDevice; } inline WaveInDevice &WaveInDevice::operator=(const WaveInDevice &someWaveInDevice) { mWaveInCaps=someWaveInDevice.mWaveInCaps; return *this; } inline WaveInDevice::~WaveInDevice() { closeDevice(); } #endif