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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值