sf::Event::Keypressed 在轮询事件循环内不工作 -SFML-2.5.1

sf::Event::Keypressed not working inside of poll event loop -SFML-2.5.1

#include <iostream>
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <SFML/System.hpp>

int main(){
    
    sf::RenderWindow window(sf::VideoMode(640, 480),  "Window");    

       while (window.isOpen())
        {
            sf::Event event;
            while (window.pollEvent(event))
            {
                switch (event.type)
                {
                    case sf::Event::Closed:
                        window.close(); break;
                    
                    case sf::Event::KeyPressed:
                        std::cout << event.key.code;
                        break;
                    
                }
            }
         }
 return 0;
}

我收到一堆这样的警告enumeration value 'MouseLeft' not handled in switch

我试着把它放在一个 if 语句而不是一个 switch 中,这样就消除了警告,但它仍然不会输出 event.key.code 我只能让它工作我把它放在 pollevent(event) 循环之外,但后来字母没有被拾取。

在您的 cout 之后添加一个 << std::flush;,您将看到关键代码。否则,在离开 SFML 主循环之前不会打印它们(不是在中断时而是在使用 x 按钮正常关闭时)。