Как я могу вызвать 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.

0 ответов

Другие вопросы по тегам