MMRESULT m_hRet;
HWAVEOUT m_hWaveOut;
WAVEFORMATEX m_WaveFormatEx;
WAVEHDR m_WaveHDR;
// 初始化WAVEFORMATEX数据结构(PCM/单声道/采样频率11.025kHz/量化精度8位)
m_WaveFormatEx.wFormatTag = WAVE_FORMAT_PCM;
m_WaveFormatEx.nChannels = 1;
m_WaveFormatEx.nSamplesPerSec = 11025;
m_WaveFormatEx.nAvgBytesPerSec = 11025;
m_WaveFormatEx.nBlockAlign = 1;
m_WaveFormatEx.wBitsPerSample = 8;
m_WaveFormatEx.cbSize = 0;
// 初始化音频数据,采样率11025Hz,频率1000Hz,长度MaxDataLength(采样点数)
char* m_pchWaveData;
if (!m_pchWaveData)
m_pchWaveData = new char[MaxDataLength];
for (int i=0; i<MaxDataLength; i++)
{
m_pchWaveData[i] = (char)(5.0*sin(2*3.1415927*1000*i/Samples));
}
// 初始化WAVEHDR数据结构
m_WaveHDR.lpData = m_pchWaveData;
m_WaveHDR.dwFlags = 0;
// 打开音频设备
m_hRet = waveOutGetNumDevs();
if (m_hRet <= 0)
{
         AfxMessageBox("没有音频输出设备,请确认计算机是否安装了声卡或声卡是否正确安装!", MB_OK | MB_ICONSTOP);
return FALSE;
}
m_hRet = waveOutOpen(&m_hWaveOut, WAVE_MAPPER, &m_WaveFormatEx, (DWORD)(GetMainView()->m_hWnd), NULL, CALLBACK_WINDOW | WAVE_ALLOWSYNC | WAVE_FORMAT_DIRECT);
if (m_hRet != MMSYSERR_NOERROR)
{
AfxMessageBox("打开音频输出设备时出现异常!", MB_OK | MB_ICONSTOP);
return FALSE;
}m_WaveHDR.dwBufferLength = _iTimeDuration;// _iTimeDuration为一小于MaxDataLength的整数
m_hRet = waveOutPrepareHeader(m_hWaveOut, &m_WaveHDR, sizeof(WAVEHDR));

m_hRet = waveOutWrite(m_hWaveOut, &m_WaveHDR, sizeof(WAVEHDR));// 现在的问题是:播放的声音不是1000Hz的,而是有多种频率