Делаю так(весь листинг): Code: HINSTANCE hInst; TCHAR szTitle[MAX_LOADSTRING]; TCHAR szWindowClass[MAX_LOADSTRING]; ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); HANDLE file; HWAVEIN in; char *buf; WAVEHDR wd; long bufsz; __int64 filePosition=0; int recordseconds=0; int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); MSG msg; HACCEL hAccelTable; LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_WAVE2, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance); if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WAVE2)); while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return (int) msg.wParam; } ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WAVE2)); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = MAKEINTRESOURCE(IDC_WAVE2); wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); return RegisterClassEx(&wcex); } BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd; hInst = hInstance; hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (!hWnd) { return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); SetWindowPos(hWnd,HWND_TOP,100,100,300,150,SWP_SHOWWINDOW); return TRUE; } LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; DWORD wb; char timert[1024]=""; switch (message) { case WM_COMMAND: { wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); if(LOWORD(wParam)==200) { waveInClose(in); CloseHandle(file); recordseconds=0; } if(LOWORD(wParam)==201) { WAVEFORMATEX wf; ZeroMemory(&wf,sizeof(WAVEFORMATEX)); wf.cbSize=0; wf.wFormatTag=WAVE_FORMAT_PCM; wf.wBitsPerSample=16; wf.nSamplesPerSec=16000L; wf.nChannels=1; wf.nBlockAlign=2; wf.nAvgBytesPerSec=wf.nSamplesPerSec*wf.nBlockAlign; waveInOpen(&in,WAVE_MAPPER,&wf,(DWORD)hWnd,0L, CALLBACK_WINDOW); bufsz=wf.nBlockAlign*wf.nSamplesPerSec; buf=new char[bufsz]; wd.dwBufferLength=bufsz; wd.lpData=buf; waveInPrepareHeader(in,&wd,sizeof(WAVEHDR)); waveInAddBuffer(in,&wd,sizeof(WAVEHDR)); waveInStart(in); file=CreateFileA("rec.wav",GENERIC_WRITE,FILE_SHARE_WRITE,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0); } }break; case WM_CREATE: { CreateWindow("button",TEXT("Stop"),WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON ,25,50,70,30,hWnd,(HMENU)200,hInst,NULL); CreateWindow("button",TEXT("Start"),WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON ,200,50,70,30,hWnd,(HMENU)201,hInst,NULL); }break; case MM_WIM_DATA: { char er[1024]; MMRESULT result=0; waveInUnprepareHeader(in, &wd, sizeof(WAVEHDR)); SetFilePointer(file,filePosition,NULL,FILE_BEGIN); filePosition=filePosition+bufsz; WriteFile(file,buf,bufsz,&wb,0); memset(buf,NULL,bufsz); wd.lpData=buf; waveInPrepareHeader(in,&wd,sizeof(WAVEHDR)); waveInAddBuffer(in,&wd,sizeof(WAVEHDR)); result=waveInStart(in); if(result!=MMSYSERR_NOERROR) { waveInGetErrorText(result,er,1024); MessageBox(hWnd,er,"",MB_OK); } recordseconds++; wsprintf(timert,"ВРЕМЯ ЗАПИСИ:%d",recordseconds); //MessageBox(0,timert,"",MB_OK); }break; case WM_NCCREATE: { LPCREATESTRUCT lpcp=(LPCREATESTRUCT)lParam; lpcp->style &= (~WS_MAXIMIZEBOX ); lpcp->style &= (~WS_SIZEBOX ); SetWindowLong(hWnd, GWL_STYLE, lpcp->style); return true; } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); RECT timeIndic; timeIndic.bottom=50; timeIndic.left=260; timeIndic.right=40; timeIndic.top=20; DrawText(hdc,timert,1024,&timeIndic,DT_CENTER); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } Проблема в том что не один плеер неможет возпроизвести получившийся файл.