#include // PCM形式のWAVEデータをファイルに保存する // char *lpFileName:ファイルの名前を指すポインタ // WAVEFORMATEX *lpwfe:データが格納されているWAVEFORMATEX構造体を指すポインタ // WAVEHDR *lpwhdr:データが格納されているWAVEHDR構造体を指すポインタ // 戻り値:0(成功) or 負値(失敗) int SaveWaveFile(char *lpFileName,WAVEFORMATEX *lpwfe,WAVEHDR *lpwhdr) { HANDLE fh=CreateFile(lpFileName,GENERIC_WRITE,0,NULL, CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL); if(fh==INVALID_HANDLE_VALUE){ MessageBox(NULL,"同名のファイルが既に存在します",lpFileName,MB_OK); return -1; } DWORD dwWriteSize; WriteFile(fh,"RIFF",4,&dwWriteSize,NULL); DWORD size=(lpwhdr->dwBufferLength + 44)-8; WriteFile(fh,&size,4,&dwWriteSize,NULL); WriteFile(fh,"WAVE",4,&dwWriteSize,NULL); WriteFile(fh,"fmt ",4,&dwWriteSize,NULL); size=16; WriteFile(fh,&size,4,&dwWriteSize,NULL); WriteFile(fh,lpwfe,size,&dwWriteSize,NULL); WriteFile(fh,"data",4,&dwWriteSize,NULL); WriteFile(fh,&lpwhdr->dwBufferLength,4,&dwWriteSize,NULL); WriteFile(fh,lpwhdr->lpData,lpwhdr->dwBufferLength,&dwWriteSize,NULL); CloseHandle(fh); return 0; }