C++ 如何在UWP DirectX/XAML应用程序中调用GetAsyncKeyState()?

C++ 如何在UWP DirectX/XAML应用程序中调用GetAsyncKeyState()?,c++,keyboard,directx,uwp-xaml,C++,Keyboard,Directx,Uwp Xaml,我有一些代码正在从一个工作的WinJS/UWP应用程序移植到DirectX/XAML变体,但我无法掌握键盘状态 控制器不是问题,通过XInputGetState()可以正常工作。 我的问题只是键盘 现行守则如下: Windows::UI::Core::CoreWindow^ win = Windows::UI::Core::CoreWindow::GetForCurrentThread(); if (win) { // misc. calls to win-&g

我有一些代码正在从一个工作的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()返回null

如果我尝试此操作,我可以获得一个win对象:

Windows::UI::Core::CoreWindow^ win =
    Windows::ApplicationModel::Core::CoreApplication::MainView->CoreWindow;

if (win)
{   
    // misc. calls to win->GetAsyncKeyState()
}
XInputGetState(activeController, &inputState);
但是窗口(swapChainPanel)不会渲染

事实上,如果我在这一部分中完全去掉“如果”部分,它仍然不会呈现出我冒昧地获取对CoreWindow的引用的行为,这意味着它会大发雷霆

我希望同时有键盘输入、控制器输入和图形输出

谁能帮我正确的咒语,让我有一个核心窗口,我可以使用,而不重要的其他功能停止工作

这都是C++。


这是在WinJS中工作的代码。

将输入轮询移动到与DirectX渲染调用不同的线程,现在它渲染为OK,但当我调用GetAsyncKeyState()时,输入线程冻结,因此我现在有更广泛的故障模式可供选择。看起来您已经解决了它,是吗?如果没有,请用您已经解决的问题和您遇到的新问题更新您的问题。不幸的是,这并没有解决问题,只是给了我一个与现有问题略有不同的看法。我仍然无法使用GetAsyncKeyState()在我的应用程序中获取键盘输入