Почему 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;
}

Пожалуйста, попробуйте и сравните, что вы делаете неправильно (а затем поделитесь с нами)

Отвечая на ваш второй вопрос, я создал окно рендеринга, но я думаю, что ваш вопрос больше касается того, может ли проект быть консольным приложением, и на самом деле это оно, и если вы попробуете его, оно отобразит и консоль, и окно.

Другие вопросы по тегам