基于VC6.0的多线程编码及音频读取

来源:互联网 发布:听音记谱软件 编辑:程序博客网 时间:2024/06/13 04:39

平台:win7+vc6.0

以下代码为应用vc6.0多线程读取音频模板:

#include <iostream.h> #include <stdio.h> #include <ctype.h>   #include <stdlib.h>    #include <math.h>#include <stdarg.h>#include <time.h> #include <string.h> #include "windows.h" #include "mmsystem.h"DWORD _stdcall ThreadProc(LPVOID lpParameter)//线程执行函数{//音频输出参数// TODO: Add your command handler code hereMCI_OPEN_PARMS mciOpenParms;MCI_PLAY_PARMS PlayParms;mciOpenParms.dwCallback=0;mciOpenParms.wDeviceID=0;mciOpenParms.lpstrDeviceType="waveaudio";mciOpenParms.lpstrAlias=" ";PlayParms.dwCallback=0;PlayParms.dwTo=0;PlayParms.dwFrom=0; int si=100; while(si>0) { if(si%5==1)//符合条件报出音频{mciOpenParms.lpstrElementName="D:\\文件夹\\28.wav";}mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpenParms);//打开音频设备;mciSendCommand(mciOpenParms.wDeviceID,MCI_PLAY,MCI_WAIT,(DWORD)(LPVOID)&PlayParms);//播放WAVE声音文件;mciSendCommand(mciOpenParms.wDeviceID,MCI_CLOSE,NULL,NULL);//关闭音频设备;  printf("子线程输出数字:%d\n",si--);  Sleep(1000); } return 0;}int main(int argc, char* argv[]){ int mi=0; CreateThread(NULL,0,ThreadProc,NULL,0,NULL);//创建一个线程,去执行ThreadProc函数 while(mi<100) {  printf("主线程输出数字:%d\n",mi++);  Sleep(1000); } return 0;}


注:其实头文件用不了那么多,为了保险我就都加上了。

另外需要嘱咐的是,在VS2010的平台上,本代码会报错,原因是缺少头文件,以及读取字符串的方式。

其中头文件需要加入#include <TCHAR.h>,读取字符串为_T("waveaudio");

两种平台上,代码均通过编译,运行成功。

原创粉丝点击