Re: Свои компоненты и освобождение ресурсов
От: Sergei I. Gorelkin Россия  
Дата: 23.12.04 05:45
Оценка:
Здравствуйте, DeniZNET, Вы писали:

DZN>Делаю свой комопонеты типа BalloonDialog для MSAgent(многофункциональная текстовая выноска как в MSOffice). Недавно просмотрел использование ресурсов в Диспетчере ресурсов, там есть скрытая колонка "Объекты GUI". Так вот когда диалог выноски появляется, то, естественно, количество объектов увеличивается, соответсвенно, увеличивается используемой памяти. Но когда диалог выноски закрывается, то количество объектов не становиться меньше. А обычные диалоги типа MessageDlg естественно освобождают. Я делаю диалоги вот, так:


<skipped>

DZN>Кроме того, если не вырезать форму по региону(через CreateRoundRectRgn, CombineRgn и SetWindowRgn), то есть оставлять прямоугольной, то освобождаются все ресурсы.

DZN>Я создают регион так:

<again skipped>

DZN>А особенно много объектов остается в памяти, когда использую CombineRgn для создания региона по картинке(по TBitmap). ТАм регионов получается много, но все они сливается в один Self.HReg. Но такое ощущение, что после удаления HReg не вся память усвобождается.

DZN>Так все-таки как правильно удалять компоненты, регионы и саму форму?


SetWindowRgn(Handle, 0) нужно вызывать, иначе регион останется в памяти. Об этом в MSDN написано...
Вызывать нужно, естественно, до удаления региона и пока Handle формы существует, то бишь раньше деструктора. Например, в CloseQuery.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.