使用SDL 2.0的事件

use*_*743 4 opengl sdl sdl-2

我使用SDL 2.0编写了一个简单的SDL程序.当我想检查鼠标滚轮事件时,我有一点问题.实际上,在版本2.0中,标志SDL_BUTTON_WHEELDOWN和SDL_BUTTON_WHEELUP不再存在.只有标志SDL_MOUSEWHEEL.下面的代码正确检查'WHEELUP'和'WHEELDOWN'事件但具有相同的标志.

while(!terminer)
    {
        while (SDL_PollEvent(&evenements))
        {
            switch (evenements.type)
            {
            case SDL_QUIT:
                terminer = true;
                break;
            case SDL_KEYDOWN:
                switch (evenements.key.keysym.sym)
                {
                case SDLK_ESCAPE:
                    terminer = true;
                    break;
                }
                break;
                case SDL_MOUSEMOTION:
                    std::cout << "MOUSE : MOVE" << std::endl;
                    break;
                case SDL_MOUSEBUTTONUP:
                case SDL_MOUSEBUTTONDOWN:
                    std::cout << "MOUSE : BUTTON DOWN" << std::endl;
                    break;
                case SDL_MOUSEWHEEL:
                    std::cout << "MOUSE : WHEEL" << std::endl;
                    break;
            }
        }
Run Code Online (Sandbox Code Playgroud)

但我想分别处理'WHEELUP'和'WHEELDOWN'事件.在我的情况下我尝试了其他几个旗帜但没有成功.有人能帮帮我吗?

jpw*_*jpw 8

您可以通过以下方式捕捉上下事件:

case SDL_MOUSEWHEEL:

    if (evenements.wheel.y < 0)
        std::cout << "MOUSE : WHEEL DOWN" << std::endl;
    else
        std::cout << "MOUSE : WHEEL UP" << std::endl;
break;
Run Code Online (Sandbox Code Playgroud)