Re[3]: HDC (MemDC) и его bitmap
От: Pavel Dvorkin Россия  
Дата: 30.03.24 02:33
Оценка: +1
Здравствуйте, пффф, Вы писали:

PD>>Надо.


П>Аргументируй


Ниже было.


>>>Я так понимаю, что при разрушении hMemDc он разрушит тот hBitmap, который в него выбран — т.е. тот, который я создал и выбрал в DC.


PD>>Не разрушит. Это не деструктор. Надо для hMemBmp делать DeleteObject, а для того, чтобы он сработал, надо, чтобы hMemBmp не была выбрана в контексте


П>Почему не разрушит? При создании HDC там же откуда-то появляется дефолтный hBitmap? Я полагаю, что он создаётся вполне стандартными средствами. Ну, может, там унутре есть функция с доп параметром bool allowDestroySelectedObj, что в наружу не прокинуто, или делается SelectObject с нулевым hBitmap, освобождая дефолтный и позволяя его удаление.


Ты можешь предполагать что хочешь, но это стандартный прием. Если хочешь подробности, то

https://www.labirint.ru/books/20294/

PD>>Do not delete a drawing object (pen or brush) while it is still selected into a DC.


PD>>https://learn.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-deleteobject


П>Это я в курсе. Но это снаружи, а как унутре, кто знает?


Фень Юань в руки, там как раз о том, что внутри.


>>>А hOldMemBmp я сам разрушу.


PD>>А ее разрушать не надо — ты ее не создавал, она сама создалась при создании hMemDC.


П>Так создалась скорее всего через стандартные механизмы.


Не ты ее создавал и не надо ее уничтожать.

П>Я на самом деле что-то не заметил нигде запрета такого способа работы с GDI ресурсами.


П>Ну и пока сделал именно так — всё работает, ничего не падает, GDI ресурсы вроде не текут, всё нормально


Бога ради.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.