loadbitmap, selectobject и deleteobject ...
От: gst  
Дата: 06.02.03 09:51
Оценка:
Здравствуйте...

Может ли кто-то чётко сказать надо ли удалять hbitmap если он был установлен в контекст, а контекст затем удалёт. т.е:

hbitmap x;

dc = createcompatibledc(smth_dc);
x = loadbitmap(instance, 'aa');
selectobject(dc, x);

...

deletedc(dc);


или всё же надо отдельно удалять так же и x(?!)...

согласно документации надо удалять каждое изображение полученое через loadbitmap, однако ясно что при удалении DC удаляются так же и все содержащиеся в нём объекты... (!!?? или не удаляются ???!)...
Re: loadbitmap, selectobject и deleteobject ...
От: SCS  
Дата: 06.02.03 10:30
Оценка:
Здравствуйте, gst, Вы писали:
gst>согласно документации надо удалять каждое изображение полученое через loadbitmap, однако ясно что при удалении DC удаляются так же и все содержащиеся в нём объекты... (!!?? или не удаляются ???!)...

не удаляются — надо делать самому. При удалении DC считается, что он находится в том виде, в каком и был создан (т.е. выбраны в него только stock объекты по умолчанию — в частности 1х1 чернобелый bitmap).
SCS
Re[2]: loadbitmap, selectobject и deleteobject ...
От: gst  
Дата: 06.02.03 13:50
Оценка:
Здравствуйте, SCS, Вы писали:

SCS>Здравствуйте, gst, Вы писали:

gst>>согласно документации надо удалять каждое изображение полученое через loadbitmap, однако ясно что при удалении DC удаляются так же и все содержащиеся в нём объекты... (!!?? или не удаляются ???!)...

SCS>не удаляются — надо делать самому. При удалении DC считается, что он находится в том виде, в каком и был создан (т.е. выбраны в него только stock объекты по умолчанию — в частности 1х1 чернобелый bitmap).


однако из той же документации следует что и stock объекты удалять стоило бы... но не обязательно...
получается надо писать своё deletedc() который будет удалять так же подобъекты всех типов?! ;(
как-то не продумано imho.
к тому же установить в два контекста одно и то же изображение, так же не всегда (если когда-либо?) удаётся :(

кстати а какое имя имеет констатна отвечающая за stock объект в виде default_bitmap, в MSDN почему-то нету такого stock объекта... :(
Re[3]: loadbitmap, selectobject и deleteobject ...
От: SCS  
Дата: 06.02.03 14:13
Оценка:
Здравствуйте, gst, Вы писали:
gst>получается надо писать своё deletedc() который будет удалять так же подобъекты всех типов?! ;(
gst>как-то не продумано imho.
да, это совсем не объектная модель. и реально, если забыть удалить bitmap, можно видеть утечку памяти

gst>кстати а какое имя имеет констатна отвечающая за stock объект в виде default_bitmap, в MSDN почему-то нету такого stock объекта...

практически единственный способ получить его хандл — вытащить его из вновь созданного DC, т.к. GetStockObject его не возвращает (и нет, соотвественно, его симв.имени)
SCS
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.