У меня есть некоторый код, который я портирую из рабочего приложения 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.
Задача ещё не решена.
Других решений пока нет …