C++ 检查鼠标滚轮状态SFML

C++ 检查鼠标滚轮状态SFML,c++,sfml,mousewheel,C++,Sfml,Mousewheel,在我的程序中,我希望能够知道鼠标滚轮是否已滚动,如果已滚动,滚动方向是多少。C++和SFML是可能的吗?< /P> 到目前为止,我有: if (sf::Event::MouseWheelEvent().delta != 0) { SimulationView.zoom(1 + (10 / sf::Event::MouseWheelEvent().delta)); } 但第二行永远不会出现,即使我滚动鼠标滚轮时,您也可以将鼠标滚轮作为事件循环的一部分读取,该循环每帧轮询一次: int m

在我的程序中,我希望能够知道鼠标滚轮是否已滚动,如果已滚动,滚动方向是多少。C++和SFML是可能的吗?< /P> 到目前为止,我有:

if (sf::Event::MouseWheelEvent().delta != 0)
{
    SimulationView.zoom(1 + (10 / sf::Event::MouseWheelEvent().delta));
}

但第二行永远不会出现,即使我滚动鼠标滚轮时,您也可以将鼠标滚轮作为事件循环的一部分读取,该循环每帧轮询一次:

int main()
{
    sf::RenderWindow window(sf::VideoMode(320, 256), "Title");

    sf::Event event;
    while(window.isOpen())
    {
        while(window.pollEvent(event))
        {
            if(event.type == sf::Event::Closed)
                window.close();
            else if(event.type == sf::Event::MouseWheelMoved)
            {
                // display number of ticks mouse wheel has moved
                std::cout << event.mouseWheel.delta << '\n';
            }
        }

        window.clear();

        // draw window here

        window.display();
    }
}

改用鼠标滚轮滚动的方式。@Hiura谢谢,我已经更新了答案以包含您的信息。
if(event.type == sf::Event::MouseWheelScrolled)
{
    if(event.mouseWheelScroll.wheel == sf::Mouse::VerticalWheel)
        std::cout << "wheel type: vertical" << std::endl;
    else if(event.mouseWheelScroll.wheel == sf::Mouse::HorizontalWheel)
        std::cout << "wheel type: horizontal" << std::endl;
    else
        std::cout << "wheel type: unknown" << std::endl;

    std::cout << "wheel movement: " << event.mouseWheelScroll.delta << std::endl;
    std::cout << "mouse x: " << event.mouseWheelScroll.x << std::endl;
    std::cout << "mouse y: " << event.mouseWheelScroll.y << std::endl;
}