switch(waveInOpen(&phwi,WAVE_MAPPER,&pcmWaveFormat,(unsigned long)Handle,0,CALLBACK_WINDOW))
{ case MMSYSERR_ALLOCATED:
ShowMessage("MMSYSERR_ALLOCTEC");return;
case MMSYSERR_BADDEVICEID:
ShowMessage("MMSYSERR_BADDEVICEID");return;
case MMSYSERR_NODRIVER:
ShowMessage("MMSYSERR_NODRIVER");return;
case WAVERR_STILLPLAYING:
ShowMessage("WAVERR_STILLPLAYING");return;
case WAVERR_BADFORMAT:
ShowMessage("WAVERR_BADFORMAT");return;
}
// ALLOCATE MEMORY AND PERPARE FOR RECORDING
for(int i=0;i<=1;i++)
{lpInWaveHdr[i]=AllocateInputLPWAVEHDRMemory(4*1024);
switch(waveInPrepareHeader(phwi,lpInWaveHdr[i],sizeof(WAVEHDR)))
{case MMSYSERR_INVALHANDLE:
ShowMessage("MMSYSERR_INVALHANDLE");return;
case MMSYSERR_NODRIVER:
ShowMessage("MMSYSERR_NODRIVER");return;
case MMSYSERR_NOMEM:
ShowMessage("MMSYSERR_NOMEM");return;
}
}
switch(vaeinAddBuffer(phwi,lpinWaveHdr[!IsNeedSwap],sizeof(WAVEHDR)))
case WAVERR_UNPREPAPERD:
ShowMessage("WAVE_UNPREPAPERD");return;
case MMSYSERR_INVALHANDLE:
ShowMessage("MMSYSERR_INVALHANDLE");return;
case MMSYSERR_NODRIVER:
ShowMessage("MMSYSERR_NODRIVER");return;
case MMSYSERR_NOMEM:
ShowMessage("MMSYSERR_NOMEM");return;
}
}
//------------------------------------------------
void _fastcall TNetTelForm::CallBackPlay(TMessage *Message)
{switch(vaeinAddBuffer(phwi,lpinWaveHdr[!IsNeedSwap],sizeof(WAVEHDR)))
case WAVERR_UNPREPAPERD:
ShowMessage("WAVE_UNPREPAPERD");return;
case MMSYSERR_INVALHANDLE:
ShowMessage("MMSYSERR_INVALHANDLE");return;
case MMSYSERR_NODRIVER:
ShowMessage("MMSYSERR_NODRIVER");return;
case MMSYSERR_NOMEM:
ShowMessage("MMSYSERR_NOMEM");return;
}
ClientSocket1->SendBuf(lpInWaveHdr[!IsNeedSwap]->lpData,lpInWaveHdr[!IsNeedSwap]->dwBufferLength);
IsNeedSwap=!IsNeedSwap;
}
//------------------------
void _fastcall TNetTelForm::InitalizeOutputDevice()
{if(waveOutOpen(&phwo,WAVE_MAPPER,&pcmWaveFormat,(unsigned log)Handle,0,CALLBACK_WINDOW)!=MMSYSERR_NOERROR)
::MessageBox(0,"out Open error","",MB_OK);
for(int i=0,i<=1;i++)lpOutWaveHdr[i]=AlocateOutputLPWAVEHDRMemory(phwo,4*1024);
Volume=Volume&0x00000000;
Volume=Volume^((DWORD)0xFFFF/2);
Volume=Volume^((DWORD)0xFFFF/2)<<16);
if(waveOutSetVolume(phwo,Volume)!=MMSYSTERR_NOERROR)
ShowMessage("waveOutSetVolume error!");
}