使用mciSendCommand实现录音
来源:互联网 发布:手机 视频剪辑 软件 编辑:程序博客网 时间:2024/04/28 21:42
#include <windows.h>#include <tchar.h>#pragma comment(lib,"Winmm.lib")#define ID_RECORD 101#define ID_STOP 102#define ID_PLAY 103HINSTANCE hInst;LRESULT CALLBACKWndProc(HWND, UINT, WPARAM, LPARAM);int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ MSG msg; WNDCLASSEX wcex;wcex.cbSize = sizeof(WNDCLASSEX); wcex.style= CS_HREDRAW | CS_VREDRAW;wcex.lpfnWndProc= (WNDPROC)WndProc;wcex.cbClsExtra= 0;wcex.cbWndExtra= 0;wcex.hInstance= hInstance;wcex.hIcon= LoadIcon (NULL, IDI_APPLICATION);wcex.hCursor= LoadCursor(NULL, IDC_ARROW);wcex.hbrBackground= (HBRUSH)(COLOR_WINDOW+1);wcex.lpszMenuName= NULL;wcex.lpszClassName= TEXT("WinApp");wcex.hIconSm= LoadIcon (NULL, IDI_APPLICATION);RegisterClassEx(&wcex); HWND hWnd; hInst = hInstance; hWnd = CreateWindow(TEXT("WinApp"), TEXT("Record"), WS_OVERLAPPEDWINDOW, 400,300, 300, 100, NULL, NULL, hInstance, NULL); if (!hWnd) { return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd);while (GetMessage(&msg, NULL, 0, 0)) {TranslateMessage(&msg);DispatchMessage(&msg);}return (int)msg.wParam;}LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){static TCHAR szFileName[] = TEXT ("record.wav") ; static WORD wDeviceID ; DWORD dwError ; MCI_GENERIC_PARMS mciGeneric ; MCI_OPEN_PARMS mciOpen ; MCI_PLAY_PARMS mciPlay ; MCI_RECORD_PARMS mciRecord ; MCI_SAVE_PARMS mciSave ;PAINTSTRUCT ps;switch (message) {case WM_COMMAND:switch(LOWORD(wParam)){ case ID_RECORD: DeleteFile (szFileName) ; // Open waveform audio mciOpen.dwCallback = 0 ; mciOpen.wDeviceID = 0 ; mciOpen.lpstrDeviceType = TEXT ("waveaudio") ; mciOpen.lpstrElementName = TEXT ("") ; mciOpen.lpstrAlias = NULL ; dwError = mciSendCommand (0, MCI_OPEN, MCI_WAIT | MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,(DWORD_PTR) &mciOpen) ; if (dwError != 0) { return TRUE ; } wDeviceID = mciOpen.wDeviceID ; // Begin recording mciRecord.dwCallback =(DWORD_PTR)hWnd ; mciRecord.dwFrom = 0 ; mciRecord.dwTo = 0 ; mciSendCommand (wDeviceID, MCI_RECORD, MCI_NOTIFY,(DWORD_PTR) &mciRecord) ; break; case ID_STOP: mciGeneric.dwCallback = 0 ; mciSendCommand (wDeviceID, MCI_STOP, MCI_WAIT,(DWORD_PTR) &mciGeneric) ; // Save the file mciSave.dwCallback = 0 ; mciSave.lpfilename = szFileName ; mciSendCommand (wDeviceID, MCI_SAVE, MCI_WAIT | MCI_SAVE_FILE, (DWORD_PTR) &mciSave) ; // Close the waveform device mciSendCommand (wDeviceID, MCI_CLOSE, MCI_WAIT, (DWORD_PTR) &mciGeneric) ; break; case ID_PLAY: mciOpen.dwCallback = 0 ; mciOpen.wDeviceID = 0 ; mciOpen.lpstrDeviceType = NULL ; mciOpen.lpstrElementName = szFileName ; mciOpen.lpstrAlias = NULL ; dwError = mciSendCommand (0, MCI_OPEN,MCI_WAIT | MCI_OPEN_ELEMENT,(DWORD_PTR) &mciOpen) ; if (dwError != 0) { return TRUE ; } wDeviceID = mciOpen.wDeviceID ; // Begin playing mciPlay.dwCallback = (DWORD_PTR) hWnd ; mciPlay.dwFrom = 0 ; mciPlay.dwTo = 0 ; mciSendCommand (wDeviceID, MCI_PLAY, MCI_NOTIFY,(DWORD_PTR) &mciPlay) ; break;}break;case WM_PAINT:BeginPaint (hWnd, &ps); EndPaint (hWnd, &ps);break;case WM_CLOSE:DestroyWindow(hWnd);break;case WM_DESTROY:PostQuitMessage(0);break;case WM_CREATE: CreateWindow( TEXT("BUTTON"), TEXT("Record"), WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 10,10,80,40, hWnd, (HMENU)ID_RECORD, hInst, NULL); CreateWindow( TEXT("BUTTON"), TEXT("Stop"), WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 100,10,80,40, hWnd, (HMENU)ID_STOP, hInst, NULL); CreateWindow( TEXT("BUTTON"), TEXT("Play"), WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 190,10,80,40, hWnd, (HMENU)ID_PLAY, hInst, NULL); break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0;}
0 0
- 使用mciSendCommand实现录音
- mciSendCommand 函数的使用!
- mciSendCommand 函数的使用!
- mciSendCommand函数使用
- 使用mciSendCommand循环播放音乐
- 使用mciSendCommand循环播放音乐
- 使用mciSendCommand循环播放音乐
- android使用MediaRecorder实现录音
- 使用websocket实现录音实例
- 用mciSendCommand实现的音乐播放类
- 使用C#调用win32 mciSendCommand 播放音乐
- mciSendString 和 mciSendCommand 函数的简单使用
- 使用J2ME实现拍照和录音功能
- OPhone中使用MediaRecorder实现录音
- Android使用MediaRecorder实现录音功能
- Android使用MediaRecorder实现录音功能
- Android录音实现——使用AtudioRecord
- 使用MediaRecorder类实现录音的功能
- IP组播及实例
- C# - How to Initialize Flags Enumerations
- 【WOW】字符编码
- org.xml.sax.SAXParseException: Premature end of file
- เล่น บาคาร่ารับสิทธิประโยชน์มากมาย
- 使用mciSendCommand实现录音
- 探索应用开发的基础之android工程目录结构
- 关于HashTable,HashMap和TreeMap的几点心得
- bmp data for OSD
- Android 代码混淆can’t find referenced class问题解决方案
- 请教高手 A a= new B();
- (一)选择题
- 最长公共子序列算法
- health monitor