简短版:
如果我无法访问 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/