Windows 上的 C++ : Using DirectInput without a window?

标签 c++ windows directinput

简短版:

如果我无法访问 HWND/HINSTANCE,我该如何初始化和使用 DirectInput?

背景信息:

我目前在我的程序的大部分部分使用 SFML,其中包括窗口创建。奇迹般有效。但我对 SFML 的输入系统并不完全满意(例如,我想要用于 XBox 360 游戏 handle 的 XInput)并想编写自己的输入系统。

我已经编写了 XInput 部分,但是对于其他游戏 handle /操纵杆/...我还需要 DirectInput。由于 SFML 对用户隐藏了与 Windows 相关的代码(这是正确的),因此我无权访问 hwnd 或 hinstance。没有它我如何使用 DirectInput?也许一直在捕获输入,而不仅仅是在窗口处于事件状态时? (然后我可以根据窗口的(取消)激活事件过滤它。)

谢谢,

先生。旺科

最佳答案

找回窗口并不难,使用 EnumThreadWindows() 和 GetCurrentThreadId()。

请注意,DirectInput 在任何地方都不需要窗口句柄。它只需要 DirectInput8Create() 中的实例句柄。 GetModuleHandle(NULL) 适用于 SFML 应用程序。

关于Windows 上的 C++ : Using DirectInput without a window?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4547073/

相关文章:

windows - 蒙哥默认配置

c# - 在进程开始之前对命令行参数执行什么处理/验证?

c++ - 我应该使用 DirectInput 还是 Windows 消息循环?

c++ - 逆向工程全局热键 block

c++ - 预处理器输出文件是否为有效的 C/C++ 文件

c++ - 如何使用寄存器和偏移地址?

c++ - 关于 C++ 结构中数组的初学者问题

c++ - 为什么不在 C++ 中调用析构函数?

Windows批处理文件备份sql数据库

c++ - 带 C++ 和 DirectInput 的 USB 操纵杆