Как уменьшить загрузку процессора при свернутом окне программы?
Запустите профайлер и смотрите, какая функция отъедает процессореое время.
Как бы не было удивительно, но программа в свернутом состоянии действительно захлебывается сообщениями WM_PAINT. Судя по всему в свернутом состоянии в программу прилетает сильно больше сообщений на перерисовку чем в несвернутом (мое предположение которое я даже проверять не хочу). Я попытался запретить перерисовку окна вызывая в case WM_SIZE: { if (wParam == SIZE_MINIMIZED) ... if (wParam == SIZE_RESTORED) ... } функции SendMessage(hWnd, WM_SETREDRAW, (WPARAM)false, NULL) и LockWindowUpdate(hWnd), но первая дала весьма странный результат (при отправке сообщения пропала иконка на панели задач и не только), вторая вообще никакого результата не дала. В результате глобально объявил переменную bool lock_draw = false и выставил ее в case WM_SIZE. Программа оперлась на костыль и пошла. Код стал выглядеть примерно так:bool lock_draw = false;
bool Core::on_message(UINT message, WPARAM wParam, LPARAM lParam)
{
    if (lock_draw && message == WM_PAINT) return false;
    ...
    switch(message) {
        ...
        case WM_SIZE: 
            if (wParam == SIZE_MINIMIZED) lock_draw = true;
            if (wParam == SIZE_RESTORED) lock_draw = false;
        ...
    }
}p.s. Задавая вопрос отсекать сообщения отрисовки я пытался функцией IsIconic(hWnd), которая судя по профайдеру занимает процессорного времени не меньше чем функция отрисовки о_О.