Re: Число созданий CompatibleBitmap под w98 сильно ограничен
От: Sergey Россия  
Дата: 22.01.04 10:42
Оценка:
Hello, elich!
You wrote on Wed, 21 Jan 2004 20:29:04 GMT:

e> Всем привет.


e> Обрисую ситуацию:

e> Есть класс списка, у которого для прорисовки каждой строки вызывается
e> примерно такой код: [quote]
e> ...
e> CBitmap bmpSrc;
e> if (bmpSrc.CreateCompatibleBitmap(&dc, bitmap.bmWidth,
e> bitmap.bmHeight) == FALSE)
e> {
e> TRACE("ОШИБКА: CompatibleBitmap не создан");
e> return;
e> };
e> ...
e> [/quote]
e> То есть при прорисовке строки каждый раз создается CompatibleBitmap.

А что с ним дальше делается? Где он убивается?

e> Подробности:

e> Ездить приходится достаточно долго, но гораздо меньше, чем обычно ездят
e> по спискам во время юзанья проги. По ощущениям, раз 1000 приходится
e> перерисовывать строки в списке, то есть раз 1000 создается
e> CompatibleBitmap. под XP никаких проблем не возникает, данная проблема
e> возникает только под w98. Такое ощущение, что в ней ограничено число
e> созданий CompatibleBitmap. В параметрах к Create поступает обычный
e> контекст рисования. Когда возникает ошибка, специльно проверил:
e> требуемая величина битмапа 14x14 пикселей (поступает в параметрах к
e> Create). GetLastError() возвращает 0 (Это Вам не XP, а w98). Все, что
e> сказано в MSDN — что размер битмапа не может превышать 16мб. А
e> GetLastErorr под w98 ничерта не возвращает. Вот и не знаю, что тут
e> делать. Может кто встречался с подобной ситуацией, разъяснит, как
e> починить?

Скорее всего ты эту битмапу после использования из контекста не удаляешь. Под XP посмотри в task manager'е — количество GDI Objects для твоего процесса растет? Если да, ищи где у тебя текут ресурсы.

Best regards,
Sergey.
Posted via RSDN NNTP Server 1.8 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.