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

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


person Fotis    schedule 30.12.2015    source источник
comment
Возможный дубликат Использование колеса прокрутки мыши в GLUT   -  person BDL    schedule 31.12.2015
comment
@BDL: Как именно это дубликат? Он не спрашивает, как это сделать; он говорит, что он сделал это, и это не сработало.   -  person Nicol Bolas    schedule 31.12.2015
comment
Извините, что не ответил раньше... трудный день (подготовка к кануну Нового года) @BDL да, я уже прочитал эту статью и попробовал оба способа, но я все еще не получил обратного вызова от колесика мыши (согласно "если" и " printf, который у меня есть в моей функции) Также у моего друга, у которого есть Mac, такая же проблема, как и у меня ... нет обратного вызова от колесика мыши ... только в Ubuntu колесико мыши работало так, как предполагалось. :/   -  person Fotis    schedule 31.12.2015


Ответы (1)


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

person Marek Kijo    schedule 31.12.2015
comment
Я использовал библиотеку freeglut, но безуспешно. По-прежнему нет ответа, когда я использую колесо мыши. Я считаю, что это как-то связано с операционной системой, а не с библиотеками. Спасибо хоть - person Fotis; 03.01.2016