播放wav文件时,设断点调试可以听到声音,整体运行就什么也听不到了。如何解决?

shadowWind 2004-08-07 10:26:30
播放wav文件的代码如:
http://community.csdn.net/Expert/topic/3250/3250458.xml?temp=.9272425

........
//播放音频数据文件
if(waveOutWrite(hWaveOut,&pWaveOutHdr,sizeof(WAVEHDR))!=0)
{
//Failed to write the wave data buffer
}
//关闭音频输出设备,释放内存
waveOutReset(hWaveOut); //设断点
waveOutClose(hWaveOut);
.................

调试时,运行到断点处停止,可以听到播放音乐。
但是一旦继续运行,马上终止播放,不论是否已经放完。
所以整体运行的时候就什么也听不到了。
这个如何解决。

另外,如何循环播放同一段.wav,以及如何终止循环?


...全文
174 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kvw3000 2004-08-07
  • 打赏
  • 举报
回复
debug模式下断点强行将程序阻塞在waveOutWrite函数
出,所以会有声音
kvw3000 2004-08-07
  • 打赏
  • 举报
回复
由于waveOutWrite()函数是异步的,并不是通过阻塞实现的,所以waveOutWrite刚开始播放就被waveOutReset(hWaveOut);waveOutClose(hWaveOut);两个函数停止了播放。相信这样说你应该知道怎么处理了,当然并不一定需要多线程,如果你是一个界面程序,可以添加两个按钮,一个播放,一个停止,当然要主要内存释放,防止泄露,防止多次delete。要简单处理,可以在waveOutWrite后使用延时
zhangnanonnet 2004-08-07
  • 打赏
  • 举报
回复
单独使用一个线程播放WAV,只有中止线程的时候才中止播放

2,644

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧