Включаем
анимацию
Реакция на
сообщение о том, что истек очередной квант времени в 33 миллисекунды (именно
такую установку мы сделали в OnLButtonUp) выглядит очень просто. Увеличиваем
углы поворота изображения на те кванты, которые вычислили в функции OnMouseMove
и вызываем перерисовку окна. Так как при непрерывном вращении углы постоянно
растут, то можно искусственно реализовать естественную их периодичность с циклом
в 360 градусов. Однако с этой задачей успешно справляется OpenGL, и вы можете
убрать код ограничения углов:
void
COGView: :OnTimer
(UINT nIDEvent)
{
//======
Если это был наш таймер
if
(nIDEvent==l)
{
//======
Увеличиваем углы поворота
m_AngleX
+= m_dy;
m_AngleY
+= m_dx;
//======
Ограничители роста углов
if
(m_AngleX > 360)
m_AngleX
-= 360;
if
(m_AngleX <-360)
m_AngleX
+= 360;
if
(m_AngleY > 360)
m_AngleY
-=360;
if
(m_AngleY <-360)
m_AngleY
+=360;
//======
Просим перерисовать окно
Invalidate(FALSE);
}
else
//===
Каркас приложения обработает другие таймеры
CView::OnTimer(nIDEvent);
}
Запустите и
протестируйте приложение. Скорректируйте, если необходимо, коэффициенты чувствительности.