--- /dev/null
+// \8b\9e
+#ifndef INC_CInputWave
+#define INC_CInputWave
+
+// \83C\83\93\83N\83\8b\81[\83h\82Í\95K\82¸\95K\97v\82È\95¨\82¾\82¯
+// \93à\95\94\82Å\97\98\97p\82·\82é\82¾\82¯\82Ì\95¨\82Í\83\\81[\83X\82É\8bL\8fq
+
+// \8aÖ\90\94\96¼\82Í\83\8d\81[\83\8f\83L\83\83\83\81\83\8b\83P\81[\83X\82Æ\82·\82é
+
+
+#include "CWaveData.h"
+#include <list>
+
+
+typedef void (*DataFullCallBack)(WAVEHDR*);
+
+////////////////////////////////////////////////////////////////////////////////
+// CInputWave
+////////////////////////////////////////////////////////////////////////////////
+class CInputWave
+{
+ ////////////////////////////////////////////////////////////////////////////////
+ // \83\81\83\93\83o\95Ï\90\94
+ ////////////////////////////////////////////////////////////////////////////////
+private:
+ // Wave\83f\83o\83C\83X\83n\83\93\83h\83\8b
+ HWAVEIN m_hWaveIn;
+ // Wave\83w\83b\83_\81[
+ typedef std::list<WAVEHDR> WaveHeaderTable;
+ WaveHeaderTable m_WaveHeaders;
+ WaveHeaderTable::iterator m_CurrentWaveHeader;
+ WaveHeaderTable::iterator m_NextWaveHeader;
+ // Wave\83f\81[\83^
+ CWaveData* m_pWaveData;
+
+ // \8aÖ\90\94\83|\83C\83\93\83^
+ DataFullCallBack m_pDataFullCallBackFunction;
+
+ // \83f\83o\83C\83X\82ð\83I\81[\83v\83\93\82µ\82Ä\82¢\82é
+ bool m_isOpen;
+ // \98^\89¹\92\86
+ bool m_isInput;
+ // \83L\83\85\81[\82É\89Á\82¦\82é\83o\83b\83t\83@\90\94
+ int m_MaxNumberOfBuffer;
+ // \83L\83\85\81[\82É\89Á\82¦\82Ä\82¢\82é\83o\83b\83t\83@\90\94
+ int m_NumberOfBufferInQueue;
+
+ ////////////////////////////////////////////////////////////////////////////////
+ // \83R\83\93\83X\83g\83\89\83N\83^
+ ////////////////////////////////////////////////////////////////////////////////
+public:
+ CInputWave();
+
+ ////////////////////////////////////////////////////////////////////////////////
+ // \83f\83X\83g\83\89\83N\83^
+ ////////////////////////////////////////////////////////////////////////////////
+public:
+ virtual ~CInputWave();
+
+ ////////////////////////////////////////////////////////////////////////////////
+ // static\8aÖ\90\94\81A\83R\81[\83\8b\83o\83b\83N\8aÖ\90\94
+ ////////////////////////////////////////////////////////////////////////////////
+ // \93ü\97Í\83f\83o\83C\83X\82Ì\8fó\91Ô\82ð\92m\82ç\82¹\82é\83R\81[\83\8b\83o\83b\83N\8aÖ\90\94
+ static void CALLBACK waveInProc(HWAVEIN in_hWaveIn, UINT in_Message, DWORD in_Instance, DWORD in_Param1, DWORD in_Param2);
+ void callbackWave(HWAVEIN in_hWaveIn, UINT in_Message, DWORD in_Instance, DWORD in_Param1, DWORD in_Param2);
+
+
+ ////////////////////////////////////////////////////////////////////////////////
+ // \91\80\8dì\83\81\83\\83b\83h
+ ////////////////////////////////////////////////////////////////////////////////
+public:
+ // \8f\89\8aú\89»
+ void initialize();
+ // \83f\83o\83C\83X\82ð\8aJ\82
+ bool open();
+ // \83f\83o\83C\83X\82ð\95Â\82¶\82é
+ bool close();
+protected:
+ // add wave buffer in queue
+ bool addWaveBuffer();
+public:
+ // \93ü\97Í\81i\98^\89¹\81j\82ð\8aJ\8en\82·\82é
+ bool start();
+ // \93ü\97Í\81i\98^\89¹\81j\82ð\92â\8e~\82·\82é
+ bool stop();
+
+ ////////////////////////////////////////////////////////////////////////////////
+ // \91®\90«\83\81\83\\83b\83h
+ ////////////////////////////////////////////////////////////////////////////////
+public:
+ void setWaveData(CWaveData* io_pWaveData)
+ {
+ m_pWaveData = io_pWaveData;
+ }
+
+ void setDataFullCallBack(DataFullCallBack in_pDataFullCallBack)
+ {
+ m_pDataFullCallBackFunction = in_pDataFullCallBack;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+ // \83C\83e\83\8c\81[\83V\83\87\83\93
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ // \8fó\91Ô
+ ////////////////////////////////////////////////////////////////////////////////
+
+ ////////////////////////////////////////////////////////////////////////////////
+ // \89\89\8eZ\8eq
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ // \8f\83\90\88\89¼\91z\8aÖ\90\94\81A\92è\8b`\82Ì\82Ý\81i\94ñ\8eÀ\91\95\92ñ\8b\9f\81j
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ // \93à\95\94\83N\83\89\83X
+ ////////////////////////////////////////////////////////////////////////////////
+
+
+};
+
+#endif //INC_CInputWave