Как я могу вызвать GetAsyncKeyState() в приложении UWP DirectX/XAML?
У меня есть некоторый код, который я портирую из рабочего приложения WinJS/UWP в вариант DirectX/XAML, но я не могу понять состояние клавиатуры.
Контроллер не проблема, он работает просто отлично с помощью XInputGetState(). У меня проблема только с клавиатурой.
Существующий код:
Windows::UI::Core::CoreWindow^ win =
Windows::UI::Core::CoreWindow::GetForCurrentThread();
if (win)
{
// misc. calls to win->GetAsyncKeyState()
}
XInputGetState(activeController, &inputState);
Но это не сработает, потому что Windows::UI::Core::CoreWindow::GetForCurrentThread() возвращает ноль.
Если я попробую это, я могу получить объект победы:
Windows::UI::Core::CoreWindow^ win =
Windows::ApplicationModel::Core::CoreApplication::MainView->CoreWindow;
if (win)
{
// misc. calls to win->GetAsyncKeyState()
}
XInputGetState(activeController, &inputState);
Но тогда окно (swapChainPanel) не рендерится.
На самом деле, если я уберу часть "если" в этой части, она все равно не будет выглядеть так, как если бы у меня была смелость получить ссылку на CoreWindow, значит, она испортилась.
Я бы хотел иметь клавиатурный ввод, ввод контроллера и графический вывод одновременно.
Может ли кто-нибудь помочь мне с правильным заклинанием, которое дает мне CoreWindow, которое я могу использовать, не останавливая работу других важных функций?
Это все C++. И это код, который работает в WinJS.