播放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,以及如何终止循环?


...全文
109 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kvw3000 2004-08-07
debug模式下断点强行将程序阻塞在waveOutWrite函数
出,所以会有声音
回复
kvw3000 2004-08-07
由于waveOutWrite()函数是异步的,并不是通过阻塞实现的,所以waveOutWrite刚开始播放就被waveOutReset(hWaveOut);waveOutClose(hWaveOut);两个函数停止了播放。相信这样说你应该知道怎么处理了,当然并不一定需要多线程,如果你是一个界面程序,可以添加两个按钮,一个播放,一个停止,当然要主要内存释放,防止泄露,防止多次delete。要简单处理,可以在waveOutWrite后使用延时
回复
zhangnanonnet 2004-08-07
单独使用一个线程播放WAV,只有中止线程的时候才中止播放
回复
相关推荐
发帖
硬件/系统
创建于2007-09-28

2596

社区成员

VC/MFC 硬件/系统
申请成为版主
帖子事件
创建了帖子
2004-08-07 10:26
社区公告
暂无公告