平台: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 here
MCI_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");

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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐