Windows上的C ++:在没有窗口的情况下使用DirectInput?

时间:2010-12-28 15:19:58

标签: c++ windows directinput

简短版本:

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

背景资料:

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

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

谢谢,

先生。 Wonko

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

要获得HINSTANCE,您可以调用:GetModuleHandle(NULL)