Почему event.mouseWheelScroll.delta всегда возвращает 0, используя SFML?
Я тестирую функцию в библиотеке SFML mouseWheelScroll.delta
но я всегда получаю возвращаемое значение 0. Почему это может быть?
Мой код, который я использовал ниже, обратите внимание, что в некоторых первых строках кода в программе я инициализировал переменную sf::Event event;
,
if (event.type == sf::Event::MouseWheelScrolled) {
std::cout << "wheel movement: " << event.mouseWheelScroll.delta << std::endl;
}
Нужно ли в библиотеке SFML окно или она может использовать консоль? (Я спрашиваю только потому, что я создаю консольное приложение)
2 ответа
Спасибо всем за помощь, оказывается, у меня были проблемы с линией sf::RenderWindow v(sf::VideoMode::getDesktopMode(), "SFML");
и это было потому, что надстройка VC++ не была установлена, поэтому я всегда получал ошибку "не удалось найти" winmm.lib "".
Оба этих примера кода, которые предоставили другие, работают, это был только я... извините, но это очень ценится!
Я почти уверен, что вы что-то забыли в цикле событий. Я попробовал этот фрагмент, и он отлично работает
#include <iostream>
#include <SFML\Graphics.hpp>
int main(){
sf::RenderWindow v(sf::VideoMode::getDesktopMode(), "SFML");
while (v.isOpen()){
sf::Event event;
while (v.pollEvent(event)){
if (event.type == sf::Event::Closed)
v.close();
else if (event.type == sf::Event::MouseWheelScrolled){
std::cout << "Wheel: " << event.mouseWheelScroll.delta << std::endl;
}
}
v.clear();
v.display();
}
return 0;
}
Пожалуйста, попробуйте и сравните, что вы делаете неправильно (а затем поделитесь с нами)
Отвечая на ваш второй вопрос, я создал окно рендеринга, но я думаю, что ваш вопрос больше касается того, может ли проект быть консольным приложением, и на самом деле это оно, и если вы попробуете его, оно отобразит и консоль, и окно.