WaveFile.h
上传用户:wymy58
上传日期:2007-01-07
资源大小:2086k
文件大小:2k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. // Copyright (C) 1998-1999 DXGuide.  All Rights Reserved.
  2. // File: WaveFile.h
  3. #ifndef _WAVEFILE__H
  4. #define _WAVEFILE__H
  5. #if _MSC_VER >= 1000
  6. #pragma once
  7. #endif // _MSC_VER >= 1000
  8. // turn off warnings for /W4
  9. #pragma warning(disable: 4201)
  10. #include <mmsystem.h>
  11. #pragma warning(default: 4201)
  12. class CPackFileManager;
  13. class CWaveFile
  14. {
  15. public:
  16. CWaveFile(void);
  17. ~CWaveFile();
  18. public:
  19. bool Load(LPCTSTR  lpszFilename,
  20. CPackFileManager*  pPackFileManager = NULL, bool  bLoadMem = false);
  21. bool Load(CFile*  pFile, bool  bLoadMem = false);
  22. bool Load(HFILE  hFile, bool  bLoadMem = false);
  23. bool LoadResource(WORD  wID, bool  bLoadMem = false, LPCTSTR  lpType = NULL);
  24. protected:
  25. bool Load(HMMIO  hmmio);
  26. public:
  27. bool Cue(void);
  28. UINT ReadWaveData(BYTE*  pbDest, UINT  cbSize);
  29. UINT GetNumBytesRemaining(void) const;
  30. UINT GetAvgDataRate(void) const;
  31. UINT GetBlockAlign(void) const;
  32. UINT GetDataSize(void) const; // size of data chunk
  33. UINT GetNumBytesPlayed(void) const;
  34. UINT GetDuration(void) const;
  35. WAVEFORMATEX* GetWaveFormat(void) const;
  36. BYTE GetSilenceData(void);
  37. protected:
  38. WAVEFORMATEX* m_pwfmt;
  39. BYTE* m_pWaveData;
  40. bool m_bLoadMem;
  41. HMMIO m_hmmio;
  42. bool m_bAutoClose;
  43. static const LPCTSTR m_lpcszDefaultWaveTypeName;
  44. MMCKINFO m_mmckiRiff;
  45. MMCKINFO m_mmckiFmt;
  46. MMCKINFO m_mmckiData;
  47. UINT m_nDuration; // duration of sound in msec
  48. UINT m_nBytesPlayed; // offset into data chunk
  49. protected:
  50. bool Create(PCMWAVEFORMAT*  pFmt);
  51. bool Create(int  nSampRate = 11025, int nSampSize = 8);
  52. public:
  53. bool SaveFile(LPCTSTR  lpszFilename,
  54. UINT  cbSize, DWORD  dwSamples, BYTE*  pbData);
  55. bool SaveFile(LPCTSTR  lpszfilename, DWORD  dwSamples = 0);
  56. protected:
  57. bool LoadToMem(void);
  58. bool CreateFile(LPCTSTR  lpszFilename);
  59. UINT WriteFile(UINT  cbWrite, BYTE*  pbSrc,
  60. MMIOINFO*  pmmioinfoOut);
  61. bool StartDataWrite(MMIOINFO*  pmmioinfoOut);
  62. bool CloseWriteFile(MMIOINFO*  pmmioinfoOut, DWORD  dwSamples);
  63. };
  64. #include "WaveFile.inl"
  65. #endif // _WAVEFILE__H