Вопрос не очень хорошо объясняет ситуацию. Тем не менее:
Q: Сначала я загружаю его, затем, если выполняются некоторые условия, я рисую его в WM_PAINT
с использованием функции IPicture::Render
.
A: Всегда рисовать картинку в WM_PAINT
. WM_PAINT
отправляется всякий раз, когда содержимое окна повреждено (из-за изменения размера окна или его открытия другими окнами), поэтому вы ДОЛЖНЫ рисовать во время WM_PAINT, иначе вы получите неокрашенные области.
Q: Я знаю, что должен использовать InvalidateRect, но я не могу понять, где его использовать? Есть ли какое-то специальное мероприятие, подобное
A: Windows автоматически вызывает InvalidateRect каждый раз, когда Windows повреждает содержимое вашего окна (например, когда вы открываете окно, восстанавливаете окно или изменяете размер окна). Это гарантирует, что сообщение WM_PAINT будет отправлено в ваше окно.
Вам нужно вызывать InvalidateRect () всякий раз, когда вы изменяете содержимое вашего окна - например, когда вы заканчиваете загрузку нового изображения, вы вызываете InvalidateRect, чтобы получить окна для отправки вам `WM_PAINT, и новое изображение будет окрашены тогда.