c++ - 在 Windows 8 商店应用程序中使用 Window->KeyDown 事件设置多个按键。 C

标签 c++ windows events key

我一直在尝试设置一个事件来检查在 Windows 8 商店应用程序中按下的多个键,但还没有成功。

以下是我的一项尝试,但尚未取得成果。

//When key is pressed down
void KeyDown(CoreWindow^ Window, KeyEventArgs^ Args)
{ 
    //if both up and left are pressed
    if ((Args->VirtualKey == VirtualKey::Up) && (Args->VirtualKey == VirtualKey::Left)) {
        MessageDialog Dialog("Up and left pressed!", "It's working!");
        Dialog.ShowAsync();
    }

目前,如果我按住两个按钮,它只会记录我按下的第二个按钮。任何帮助将一如既往地不胜感激=)我看到的用于多次按键的方法适用于较旧的操作系统。

最佳答案

已解决:在 cplusplus.com 论坛的帮助下,用户“NTR”

他的解决方案:

“我还没有尝试制作 Windows 8 商店应用程序(因为没有拥有 Windows 8),但这个概念应该与旧版本非常相似。

您是否尝试过使用一个 bool 值数组来存储按键是否被按下,然后测试 keypress 和 keyrelease 对象以关闭和打开这些值?

例如(基于您的代码):

bool keyDownArray[256] = {false};  // keys array
// OR, if the keys aren't stored as numerical values anymore...
bool leftKey = false;
bool upKey = false;
// ...


Window->KeyDown += ref new TypedEventHandler<CoreWindow^, KeyEventArgs^>
    (this, &App::KeyDown);
Window->KeyUp += ref new TypedEventHandler<CoreWindow^, KeyEventArgs^>
    (this, &App::KeyUp);

void KeyDown(CoreWindow^ Window, KeyEventArgs^ Args) {
    // either
    keyDownArray[Args->VirtualKey] = true;
    // or
    if (Args->VirtualKey == VirtualKey::Up)
        upKey = true;
    if (Args->VirtualKey == VirtualKey::Left)
        leftKey = true;
}

void KeyUp(CoreWindow^ Window, KeyEventArgs^ Args) {
    // either
    keyDownArray[Args->VirtualKey] = false;
    // or
    if (Args->VirtualKey == VirtualKey::Up)
        upKey = false;
    if (Args->VirtualKey == VirtualKey::Left)
        leftKey = false;
}

// ....

if (keyDownArray[VirtualKey::Up] && keyDownArray[VirtualKey::Left]) {
    MessageDialog Dialog("Up and left pressed!", "It's working!");
    Dialog.ShowAsync();
}

// OR

if (keyLeft && keyUp) {
    MessageDialog Dialog("Up and left pressed!", "It's working!");
    Dialog.ShowAsync()
}

正如我所说,我之前没有开发过任何 Windows 8 商店应用程序,因此这可能是完全错误的,但希望它能为您提供一个可以实现的可能解决方案的想法。”

完全归功于他!

关于c++ - 在 Windows 8 商店应用程序中使用 Window->KeyDown 事件设置多个按键。 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20051231/

相关文章:

c++ - 将交互式控制台附加到嵌入式 python 脚本

c++ - 控制获取制表符和空格等热键

Android原生C++函数调用导致应用崩溃

c++ - 为 C++ 应用程序创建故障转储报告

Windows curl 批处理文件

c# - 异步ping

c# - 如何编写触发器?

c++ - 返回指针时出现运行时错误

c++ - 如何使用 C++ : When STDIN is NOT redirected 通过标准输入获取可用数据的大小

jquery - 从动态创建的对象中获取第一个同级 <td> 内的输入值