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 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.