Программирование для windows. Как правильно управлять программой? Winapi

У програм с GUI есть главный цикл.

Для игр элементарный
while(1)
{
}

цикл работает постоянно, отсюда нагрузка на процессор.

у обычной windows программы там по другому.

MSG msg;
while (GetMessage(&msg, nullptr, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

видимо всё работает только когда окно получает какое либо сообщение.
соответственно, нагрузки на процессор почти нет.

Вот у меня есть квадрат (функция FillRect).
Я хочу по клику мышки, схватить его, и переместить в другое место.
Я добавил обработку перемещения в WM_INPUT. Но это не годится так как программа не рисует то что сейчас произошло (перемещаю в одну сторону, всё окей, начинаю перемещать в другую, квадрат всё ещё чуть перемещается по старинке).

А что если я захочу вставить анимацию в угол окна? Нужно делать обновление со временем, чтобы была анимация.

Куда это всё девать? Как делают нормальные проги чтобы всё и рисовалось, и реагировало правильно, и чтобы 0-1% CPU было в диспетчере задач?

> цикл работает постоянно, отсюда нагрузка на процессор.
Без слипа подобных циклов не делают, пустой цикл со слипом не создаёт загрузки ядер.

А почему WM_INPUT а не WM_MOUSEMOVE?

Добавить комментарий