C ++ в Windows: использование DirectInput без окна? - PullRequest
3 голосов
/ 28 декабря 2010

Короткая версия:

Как инициализировать и использовать DirectInput, если у меня нет доступа к HWND / HINSTANCE?

Справочная информация:

В настоящее время я использую SFML для большинства частей моей программы, в том числе для создания окон. Работает как шарм. Но я не полностью удовлетворен системой ввода SFML (например, я хочу XInput для геймпадов XBox 360) и хочу написать свою собственную.

Я уже написал часть XInput, но для других геймпадов / джойстиков / ... мне также нужен DirectInput. Поскольку SFML скрывает связанный с Windows код от пользователя (и это правильно), у меня нет доступа к hwnd или hinstance. Как я могу использовать DirectInput без него? Может быть, ловить ввод постоянно, а не только когда окно активно? (Затем я мог бы отфильтровать его по активированному событию окна.)

Спасибо

г. Wonko

Ответы [ 2 ]

3 голосов
/ 28 декабря 2010

Найти окно обратно не сложно, используйте EnumThreadWindows () и GetCurrentThreadId ().

Обратите внимание, что DirectInput нигде не нужен дескриптор окна. Ему просто нужен дескриптор экземпляра в DirectInput8Create (). GetModuleHandle (NULL) подходит для SFML-приложений.

1 голос
/ 28 декабря 2010

Чтобы получить HINSTANCE вы можете позвонить: GetModuleHandle (NULL)

...