c++ - 如何使用修饰键组合?

标签 c++ sfml

我正在使用 SFML 构建一个基本的文本编辑器。为此,我需要使用组合键 CTRL + S 进行保存。

当我按下 CTRL + S 时,我当前的解决方案会保存,并在我的编辑器中生成一个“s”。这个额外的 's' 是不需要的。

这是我目前拥有的代码:

//Main loop:

if (event.type == sf::Event::KeyPressed)
    {
        if (event.key.code == sf::Keyboard::S
            && event.key.control)
        {
            cout << "testing" << endl;
        }
    }
    else if (event.type == sf::Event::TextEntered)
    {
    }

换句话说:我希望 TextEntered 正常工作。但是如果我按 CTRL + S,它将禁用 TextEntered 并执行保存。我该怎么做?

最佳答案

只需在 TextEntered 的处理程序中进行实时 key 检查。例如

else if (event.type == sf::Event::TextEntered)
{
    if (!sf::Keyboard::isKeyPressed(sf::Keyboard::LControl) &&
        !sf::Keyboard::isKeyPressed(sf::Keyboard::RControl))
    {
        // handle text event
    }
    else
    {
        // do something else, or nothing
    }
}

关于c++ - 如何使用修饰键组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29761018/

相关文章:

c++ - 从派生进程的管道读取时,select() 阻塞后的 read()

c++ - 访问 Windows 声音?

c++ - AllocaInst 的使用示例 : LLVM

c++ - 为什么我无法捕获此异常? (C++,SFML)

c++ - 如何比较 sfml 中的位置?

c++ - SFML 2.1 复制图像

c++ - 在 Linux 中使用 C++ 跨卷 move 文件

c++ - 从 char * 中的整数填充 vector<int>

c++ - SFML 在另一个类中绘制移动 Sprite

c++ - 如何计算我的数组条目条目号