windows – 如何在控制台程序中为DirectSound SetCooperativeLev
我正在编写一个控制台程序,它使用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中PHP5.2.14以及apache2.2.16安装配置方法
- 在Windows静态库中查找未定义的符号
- 更改Windows任务管理器中的进程优先级是否会导致问题?
- windows – 是否可以以编程方式找出通过网络锁定文件的进程
- 在win32 API和.NET框架之间进行选择
- Azure功能 – 无法加载文件或程序集”Microsoft.WindowsAzu
- windows-server-2008-r2 – DFSR Backlog卡在不存在的文件夹
- Windows GUI编程 – C SDK或C#Windows窗体
- 从Windows服务播放wave文件(C#)
- windows – Active Directory密码已过期.如果我将其设置为永
- Windows 7 – 如何在Windows 7任务调度程序中使用
- Windows – MS.Win32.Penimc.UnsafeNativeMethod
- windows-server-2008 – 更改SharePoint徽标?
- uml – 如何在Microsoft Visio 2007中的序列图中
- windows – Cmd和感叹号 – 第二部分
- windows-8 – 无法在Windows 8中播放声音
- .net – System.Windows.Media.DrawingVisual.Re
- VirtualBox Windows 10 64位主机 – VM会话已中止
- windows-server-2008 – 备份组策略对象及其OU链
- wix – RestartManager在更新期间无法重新启动应