本人比较菜。基于对话框想做一个录音并且保存为wav文件的MFC程序。//////////////////////////////////////////////////////////////////
在 dlg.cpp开头添加了:#include <MMSystem.h>
#pragma comment(lib,"winmm.lib")
using namespace std;#define INP_BUFFER_SIZE 960000 //960000=3s
int num;PBYTE pBuffer1,pBuffer2;
PWAVEHDR pWaveHdr1,pWaveHdr2;
WAVEFORMATEX waveform={WAVE_FORMAT_PCM,1,44100,44100,1,8,0};
HWAVEIN hWaveIn;////////////////////////////////////////////////////////////////////
在OnInitDialog()里面添加了: pBuffer1=(PBYTE)malloc(INP_BUFFER_SIZE);
pBuffer2=(PBYTE)malloc(INP_BUFFER_SIZE);
pWaveHdr1=(PWAVEHDR)malloc(sizeof(WAVEHDR));
pWaveHdr2=(PWAVEHDR)malloc(sizeof(WAVEHDR)); if (num=waveInOpen(&hWaveIn,WAVE_MAPPER,&waveform,(DWORD)this->m_hWnd,NULL,CALLBACK_WINDOW))
{
free(pBuffer1);
free(pBuffer2);
MessageBeep(MB_ICONEXCLAMATION);
MessageBox(L"Cannot open audio!",L"Error",MB_ICONEXCLAMATION);
} pWaveHdr1->lpData=(LPSTR)pBuffer1;
pWaveHdr1->dwBufferLength=INP_BUFFER_SIZE;
pWaveHdr1->dwBytesRecorded=0;
pWaveHdr1->dwUser=0;
pWaveHdr1->dwLoops=1;
pWaveHdr1->lpNext=NULL;
pWaveHdr1->reserved=0;
num=waveInPrepareHeader(hWaveIn,pWaveHdr1,sizeof(WAVEHDR));
if(num==11)
{
MessageBox(L"Error prepare header1.");
} pWaveHdr2->lpData=(LPSTR)pBuffer2;
pWaveHdr2->dwBufferLength=INP_BUFFER_SIZE;
pWaveHdr2->dwBytesRecorded=0;
pWaveHdr2->dwUser=0;
pWaveHdr2->dwLoops=1;
pWaveHdr2->lpNext=NULL;
pWaveHdr2->reserved=0;
num=waveInPrepareHeader(hWaveIn,pWaveHdr2,sizeof(PWAVEHDR));
if(num==11)
{
MessageBox(L"Error prepare header2.");
}/////////////////////////////////////////////////////////////////////////////
于是乎两次waveInPrepareHeader的返回值都是11,请教各位高手该如何解决?##注:MSDN里面说错误返回值11指的是
#define MMSYSERR_INVALPARAM   (MMSYSERR_BASE + 11) /* invalid parameter passed */