Я думаю, что есть две проблемы:
- обнаружение неверной области элемента управления (без помощи окон)
- рендеринг только недействительной части.
По первому вопросу, я думаю, вы в значительной степени сами по себе. Вы должны следить за тем, какие элементы управления меняются, и вести учет, который нуждается в обновлении.
Для второго вопроса вы можете попытаться отправить сообщение WM_PRINT самостоятельно и предоставить DC, ссылающийся только на маленькую битовую карту. Оригинальный DC API позволял вам смещать и обрезать действительную область рисования HDC.
Если вам очень повезет, окна выведут область рендеринга из HDC, а если нет, большинство команд рендеринга, которые полностью выпадают из растрового изображения, должны быть довольно дешевыми, поскольку нет пикселей, которые нужно менять.
Вы сможете проверить это, напечатав в растровое изображение 1x1, и проверить, быстрее ли оно, и / или проверить, уменьшена ли область клипа, отправленная в WM_PAINT, до размера растрового изображения.