📄 wavefile.cpp
字号:
// WaveFile.cpp: implementation of the CWaveFile class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "WaveFile.h"
#define WF_OFFSET_FORMATTAG 20
#define WF_OFFSET_CHANNELS 22
#define WF_OFFSET_SAMPLESPERSEC 24
#define WF_OFFSET_AVGBYTESPERSEC 28
#define WF_OFFSET_BLOCKALIGN 32
#define WF_OFFSET_BITSPERSAMPLE 34
#define WF_OFFSET_DATASIZE 40
#define WF_OFFSET_DATA 44
#define WF_HEADER_SIZE WF_OFFSET_DATA
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CWaveFile::CWaveFile()
{
}
CWaveFile::~CWaveFile()
{
}
BOOL CWaveFile::Open(LPCTSTR szFileName)
{
BYTE aHeader[WF_HEADER_SIZE];
/* hResInfo = FindResource (hInst, lpName, "WAVE");
if (hResInfo == NULL)
return FALSE;
// Load the wave resource.
hRes = LoadResource (hInst, hResInfo);
if (hRes == NULL)
return FALSE;
// Lock the wave resource and play it.
lpRes = */LockResource (0);
// open file
m_pFile = _tfopen(szFileName, TEXT("rb"));
if (!m_pFile) {
return FALSE;
}
// set file length
fseek(m_pFile, 0, SEEK_END);
m_nLength = ftell(m_pFile) - WF_HEADER_SIZE;
// set the format attribute members
fseek(m_pFile, 0, SEEK_SET);
fread(aHeader, 1, WF_HEADER_SIZE, m_pFile);
m_Format.wFormatTag = *((WORD*) (aHeader + WF_OFFSET_FORMATTAG));
m_Format.nChannels = *((WORD*) (aHeader + WF_OFFSET_CHANNELS));
m_Format.nSamplesPerSec = *((DWORD*) (aHeader + WF_OFFSET_SAMPLESPERSEC));
m_Format.nAvgBytesPerSec = *((DWORD*) (aHeader + WF_OFFSET_AVGBYTESPERSEC));
m_Format.nBlockAlign = *((WORD*) (aHeader + WF_OFFSET_BLOCKALIGN));
m_Format.wBitsPerSample = *((WORD*) (aHeader + WF_OFFSET_BITSPERSAMPLE));
return TRUE;
}
void CWaveFile::Close()
{
fclose(m_pFile);
}
long CWaveFile::Read(char* pData, long nLength)
{
return fread(pData, 1, nLength, m_pFile);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -