недавно я программировал простую программу на C ++ и GLUT и хотел использовать колесо прокрутки для некоторого увеличения / уменьшения скорости вращения. Я обнаружил, что колесо прокрутки генерирует обратный вызов 3/4 (3 для прокрутки вверх 4 для прокрутки вниз). Моя проблема в том, что на окнах я не получаю никакого обратного вызова вообще! левый правый и средний щелчок мыши генерируют 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, и у меня возникла та же проблема, поэтому, если у кого-то есть что-то, что я могу предложить, я буду очень благодарен!
К сожалению, не гарантируется, что glutMouseFunc будет генерировать обратный вызов для действия колеса, проверьте спецификацию GLUT, тот факт, что он работает на Linux, не соответствует спецификации GLUT. Я думаю, что раньше было что-то вроде glutMouseWheelFunc, теперь нет возможности получить какой-либо обратный вызов о wheel, который не зависит от конкретной реализации.
Вы все еще можете попробовать использовать библиотеку FreeGLUT, она более новая, а также кроссплатформенная, для уверенности, что реализованы действия колеса.
Удачи.
Других решений пока нет …