Я не уверен, что это возможно. Но в основном суть того, что мне нужно, заключается в том, что куча вещей в моей программе Win32 обращается к hWnd через контекст устройства во время WM_PAINT. Затем через отдельную функцию у меня есть больше материала, обращенного к hWnd через тот же DC. К сожалению, поскольку я использую тот же DC, материал, нарисованный во время WM_PAINT, все еще хранится в DC, и поэтому впоследствии снова копируется через мою функцию.
Что мне нужно сделать, так это очистить содержимое контекста моего устройства в конце WM_PAINT или в начале моей функции, чтобы материал не копировался дважды.
Почему вы не можете сделать весь рисунок в обработчике WM_PAINT? На втором рисунке как вы рисуете? Возможно, вы используете GetDC для получения контекста устройства и рисования, верно?
Проблема в том, что когда вы рисуете вне обработчика WM_PAINT, он стирается, когда окно необходимо перерисовать, а рисунок WM_PAINT превосходит вашу картину на основе GetDC, если вы не используете битовый формат для сохранения содержимого текущего контекста
Делайте все свои рисунки в растровое изображение вне экрана, когда вам нужно, находясь вне WM_PAINT
затем просто скопируйте текущий рисунок в HWND
Внутри WM_PAINT
,