📄 多声卡(1).cpp
字号:
#include <stdio.h>
#include <windows.h>
#include <stdio.h>
HANDLE m_File;
#include "Wave.cpp"
WAVEFORMATEX * wf;
DWORD filebuflen;
HANDLE FileHandle;
void saveFile(HWND hWnd,LPTSTR pSaveBuffer,DWORD dwDataLength);
CALLBACK void fun(HWAVEIN hWaveIn,LPSTR pBuf,DWORD dwLen)
{
printf("fun1 %d\n",dwLen);
filebuflen +=dwLen;
xxRecorderClose(wavein);
//WriteFile(FileHandle, pBuf, dwLen, &dwLen, NULL);
//FlushFileBuffers(FileHandle);
}
DWORD FCC(LPSTR lpStr)
{
DWORD Number = lpStr[0] + lpStr[1] *0x100 + lpStr[2] *0x10000 + lpStr[3] *0x1000000 ;
return Number;
}
void saveFile(HWND hWnd,LPTSTR pSaveBuffer,DWORD dwDataLength)
{
DWORD NumToWrite=0;
DWORD dwNumber = 0;
FileHandle =CreateFile( "myTest.wav", GENERIC_WRITE, FILE_SHARE_READ, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
dwNumber = FCC("RIFF");
WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);
dwNumber = dwDataLength + 18 + 20;
WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);
dwNumber = FCC("WAVE");
WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);
dwNumber = FCC("fmt ");
WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);
dwNumber = 18L;
WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);
WriteFile(FileHandle, wf, sizeof(WAVEFORMATEX), &NumToWrite, NULL);
dwNumber = FCC("data");
WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);
dwNumber = dwDataLength;
WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);
WriteFile(FileHandle, pSaveBuffer, dwNumber, &NumToWrite, NULL);
FlushFileBuffers(FileHandle);
//waveout
//SetEndOfFile(FileHandle);
//CloseHandle( FileHandle ); FileHandle = INVALID_HANDLE_VALUE; // 收尾关闭句柄
}
void main(int argc,char * argv[])
{
WAVEOUTCAPS ps;
unsigned int id;
char buf[0xff];
HWAVEIN wavein;
DWORD dwNumber = 0;
DWORD buflen = 0xff;
DWORD NumToWrite =0;
xxInit();
xxGetWaveDeviceListEx(1,buf,&buflen);
printf("%s %d",buf,buflen);
wavein = xxRecorderOpen(0,0,fun);
wf = xxGetWaveFormat(wavein);
//saveFile(0,0,0);
filebuflen = 0;
xxRecorderStart(wavein,0);
getchar();
xxRecorderClose(wavein);
/*
dwNumber = FCC("RIFF");
WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);
dwNumber = filebuflen + 18 + 20;
WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);
dwNumber = FCC("WAVE");
WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);
dwNumber = FCC("fmt ");
WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);
dwNumber = 18L;
WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);
WriteFile(FileHandle, wf, sizeof(WAVEFORMATEX), &NumToWrite, NULL);
dwNumber = FCC("data");
WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);
dwNumber = filebuflen;
WriteFile(FileHandle, &dwNumber, 4, &NumToWrite, NULL);
SetEndOfFile(FileHandle);
FlushFileBuffers(FileHandle);
CloseHandle( FileHandle ); FileHandle = INVALID_HANDLE_VALUE; // 收尾关闭句柄
//xxRecorderClose(wavein);*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -