Плавное перемещение объекта эллипса слева направо в MFC


У меня есть класс MyEllipe, который расширяет CStatic.

У меня есть собственное тело метода OnPaint, которое переопределяет.

И у меня есть метод для перемещения этого объекта в диалоговом окне для перемещения слева направо:

for(int i = 0; i <= 600; i++) {
   myEllipseObject->SetWindowPos(NULL, i, 300, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
   Sleep(1);
}
Таким образом, в основном он движется один за другим с задержкой в 1 миллисекунду.. Это работа? Да. Это правильно? Я в этом сомневаюсь :). Итак, каков правильный и обоснованный способ сделать это? У меня есть один эллипс и один прямоугольник, которые я хочу переместить слева направо, когда пользователь нажимает на кнопка.

Любая идея ценится.

1 2

1 ответ:

Обычно это делается с помощью таймера. Например, вы можете установить таймер и обновить положение при срабатывании таймера. Вы можете либо ответить на WM_TIMER сообщение или укажите функцию, которую он будет вызывать при срабатывании таймера.