Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Храним HDC окна. Плохо?


@!!ex ©   (2009-02-16 16:49:00) 

В документации говорится, что надо получать HDC с помощью GetDC и после использования сразу освобождать с помощью ReleaseDC.
Так работает OnPaint. Там получается DC в начале события и релизится вконце.
Почеме нельзя получать HDC при создании окна и освобождать по окончанию работы?


Eraser   (2009-02-16 17:42:00) [1]

> [0] @!!ex ©   (16.02.09 16:49)

где именно в документации это говорится?

вообще то никаких GetDC напрямую не вызывается, по крайней мере в VCL. вызывается BeginPaint.

> Почеме нельзя получать HDC при создании окна и освобождать
> по окончанию работы?

VCL вроде того и сделано. только HDC обернут в TCanvas.


MBo   (2009-02-16 17:39:00) [2]

да

только не "получу CS_OWNDC для окна", а у окна в стиль должен быть включен этот ключ


clickmaker   (2009-02-16 17:37:00) [3]

если ресурсов достаточно, то да
но злоупотреблять не стоит этим, все-таки GDI не бездонный


@!!ex   (2009-02-16 17:23:00) [4]

Если я получу CS_OWNDC для окна под ОС не ниже XP, то могу только с ним работать?


clickmaker   (2009-02-16 17:11:00) [5]

потому что это некая внутренняя структура, которая инициализируется какждый раз при получении, к тому же не разделяемая между потоками.
Это - для обычных DC, которых в вин9х вообще ограниченное число - т.е. дань обратной совместимости.
Но есть еще классовые DC, которые разделяются между окнами одного класса, их не освобождают поэтому. Это для окон со стилем класса CS_CLASSDC.
Есть приватные DC, которые создаются один раз для каждого окна - CS_OWNDC, их тоже можно не освобождать, на на 9х они опять же приведут к быстрому перерасходу ресурсов.


Наверх

Титульная страница Поиск, карта сайта Написать письмо