C++ 如何在UWP DirectX/XAML应用程序中调用GetAsyncKeyState()?
我有一些代码正在从一个工作的WinJS/UWP应用程序移植到DirectX/XAML变体,但我无法掌握键盘状态 控制器不是问题,通过XInputGetState()可以正常工作。 我的问题只是键盘 现行守则如下: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
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()在我的应用程序中获取键盘输入