除非我调试步骤,否则无法听到Directsound

时间:2014-03-08 23:56:57

标签: c++ opengl gdi+ directsound

我的问题是,当我在调试中遇到断点然后恢复时,我只听到声音。如果我不这样做,我就听不到声音;即使一切似乎都在播放。例如,onComplete回调会在正确的时间触发。

我已尝试在代码中使用Sleeps来模拟断点,但它不起作用。

只有当我使用OpenGL进行图形处理时,才会出现此错误。如果我使用GDI +作为图形,那么一切听起来都不错。

DirectSound是我唯一的声音实现,所以我还没有测试过其他声音包。

我确实找到了一些建议禁用Visual Studio Hosting Process的信息,但我使用的是C ++,它不使用Visual Studio Hosting Process。

任何帮助将不胜感激 谢谢 莱斯

1 个答案:

答案 0 :(得分:0)

问题是DirectSound的SetCooperativeLevel()中使用的HWND。我在完成glutCreateWindow()后立即通过GetForegroundWindow()获取HWND。相反,我直到下一个调用GetForegroundWindow(),因为在那之前,实际上没有创建过剩窗口,并且对GetForegroundWindow()的调用实际上是引用过剩使用的shell窗口。