![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Посмотрите пожалуйста, что крамольного в коде? [D6, WinXP]
Jel © (2004-05-26 18:09:00)
IconArray : array of HIcon;
...
function TForm1.GetIconWidth(index: integer): integer;
var IcInfo : TIconInfo;
BmpInfo : BITMAP;
begin
Result := 0;
if GetIconInfo(IconArray[index], IcInfo) then begin
if GetObject(IcInfo.hbmColor, SizeOf(BmpInfo), @BmpInfo) <> 0 then
Result := BmpInfo.bmWidth
else ShowMessage(SysErrorMessage(GetLastError));
end;
end;
Радость сия вызывается из процедуры отрисовки витруального листбокса для определения размера иконки. При каждом вызове количество объектов GDI (по данным диспетчера задач) увеличивеатся на 14 и через определенное время программа благополучно начинает глючить (возникают проблемы с отрисовкой). К этому моменту количество объектов GDI переваливает за несколько тысяч. Создается впечатление, что что-то выделяется, но не освобождается. Никак не могу сообразить что именно? Ткните носом, плиз.
Jel (2004-05-26 18:46:00) [1]
> VMcL © (26.05.04 18:28) [1]
!
Спасибо. Проглядел. :)
VMcL (2004-05-26 18:28:00) [2]>>Jel © (26.05.04 18:09)
GetIconInfocreates bitmaps for the hbmMask and hbmColor members of ICONINFO. The calling application must manage these bitmaps and delete them when they are no longer necessary.
?