wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了windows – 如何在控制台程序中为DirectSound SetCooperativeLevel提供HWND?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在编写一个控制台程序,它使用DirectSound API来渲染一些音频数据.在追踪 DirectSound ProgrAMMing Guide (from Microsoft)时,我偶然发现了一个奇怪的问题.根据 documentation: After creaTing a device object, you must set the cooperative level for the
我正在编写一个控制台程序,它使用DirectSound API来渲染一些音频数据.在追踪 DirectSound Programming Guide (from Microsoft)时,我偶然发现了一个奇怪的问题.根据 documentation

问题是我正在编写一个控制台程序,而SetCooperativeLevel需要一个HWND作为第一个参数.我没有在控制台程序中处理任何HWND.我尝试提供空指针,但它失败了DSERR_INVALIDPARAM错误代码.

应该在控制台程序中向IDirectSound8 :: SetCooperativeLevel提供什么HWND值?计划的音频部分计划构建为共享库,因此几乎不知道“外部”程序.

谢谢你的建议!

注意:我知道有一个更好的解决方案可以简单地渲染音频,比如使用SDL,OpenAL,SFML(基于OpenAL),但对于我当前的项目,DirectSound是强制执行的.

编辑:我从Microsoft工程师那里找到了一个message,它在创建GLOBAL_FOCUS缓冲区时消除了对使用桌面窗口或控制台窗口作为SetCooperativeLevel的HWND的疑虑.

解决方法

然我自己没有对此进行测试,但您可能会成功创建一个隐藏窗口并将其HWND传递给SetCooperativeLevel方法. SetCooperativeLevel使用此hwnd来确定应用程序何时具有输入焦点;因此,如果您选择输入焦点无关紧要的合作级别(例如,DSSCL_NORMAL),则隐藏窗口(永远不会接收输入焦点)应该没问题.

大佬总结

以上是大佬教程为你收集整理的windows – 如何在控制台程序中为DirectSound SetCooperativeLevel提供HWND?全部内容,希望文章能够帮你解决windows – 如何在控制台程序中为DirectSound SetCooperativeLevel提供HWND?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。