waveOutOpen、waveOutWrite系统函数用法编程实现声音播放

// vc console
#include <windows.h>
#include <stdio.h>

#pragma comment(lib, "Winmm.lib")

#define MUTE_LENGTH 128
#define SAMPLE_RATE 11025

void main()
{
 HANDLE hEvent = CreateEvent(NULL , false , false , TEXT("PCM WRITE"));

 HWAVEOUT hWaveOut; //波形音频输出句柄
 char  mute[MUTE_LENGTH]; //静音符号串
 WAVEFORMATEX waveformat = {
  WAVE_FORMAT_PCM, 1, SAMPLE_RATE, SAMPLE_RATE, 1, 8, 0
 }; //设定波形音频的格式
 WAVEHDR waveHdr = {
  0, MUTE_LENGTH, 0, 0, 0, 1, NULL, 0
 }; //音频数据信息头

 FillMemory(mute, MUTE_LENGTH, (BYTE)0x80); //用静音符号填充
 waveHdr.lpData = mute; //初始化信息头指针
 //打开音频设备
 waveOutOpen (&hWaveOut, WAVE_MAPPER, &waveformat, (DWORD)hEvent, 0, CALLBACK_EVENT);
 //准备信息头
 waveOutPrepareHeader (hWaveOut, &waveHdr, sizeof (WAVEHDR)) ;

 while(1)
 {
  //播放静音符号
  waveOutWrite (hWaveOut, &waveHdr, sizeof (WAVEHDR)) ;
  printf(".");
  WaitForSingleObject(hEvent,INFINITE);
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值