Нет обратного вызова колеса прокрутки на glutMouseFunc

Недавно я программировал простую программу на C++ и GLUT и хотел использовать колесо прокрутки для некоторого увеличения / уменьшения скорости вращения. Я обнаружил, что колесо прокрутки генерирует обратный вызов 3/4 ( 3 для прокрутки вверх, 4 для прокрутки вниз). Моя проблема в том, что на окнах я не получаю никакого обратного вызова вообще! левый правый и средний щелчок мыши генерируют 0,1 и 2, но колесо прокрутки ничего. (Я работаю на Visual Studio 2015 и Windows 10) В моей системе Ubuntu с теми же библиотеками колесо прокрутки генерирует обратные вызовы просто отлично, но на окнах ничего. вот код, который я использую на glutMouseFunc()

void setRotationSpeed(int button, int dir, int x, int y)
{
    printf("button is %d\n", button);
    if (button == 3)
    {
        rotationSpeed += 0.1;
    }
    if (button == 4)
    {
        if (rotationSpeed > 0.0)
            rotationSpeed -= 0.1;
    }
}

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

1 ответ

К сожалению, не гарантируется, что glutMouseFunc будет генерировать обратный вызов для действия колеса, проверьте спецификацию GLUT, тот факт, что он работает на Linux, не соответствует спецификации GLUT. Я думаю, что раньше было что-то вроде glutMouseWheelFunc, теперь нет возможности получить какой-либо обратный вызов о wheel, который не зависит от конкретной реализации. Вы все еще можете попробовать использовать библиотеку FreeGLUT, она более новая, а также кроссплатформенная, для уверенности, что реализованы действия колеса. Удачи.

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