#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)
, но тогда буквы не подбирались.
Сделайте правильный минимально воспроизводимый пример.
Добавьте << std::flush;
после cout
, и вы увидите коды клавиш. В противном случае они не будут напечатаны до тех пор, пока основной цикл SFML не будет покинут (не при прерывании, а при корректном закрытии с помощью кнопки x).
Этот фрагмент кода не помогает, потому что по сравнению с моим примером кода он должен работать. Пожалуйста, предоставьте воспроизводимый код.