Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.31;
Скачать: CL | DM;

Вниз

Храним HDC окна. Плохо?   Найти похожие ветки 

 
@!!ex ©   (2009-02-16 16:49) [0]

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


 
clickmaker ©   (2009-02-16 17:11) [1]

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


 
@!!ex ©   (2009-02-16 17:23) [2]

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


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

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


 
MBo ©   (2009-02-16 17:39) [4]

да

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


 
Eraser ©   (2009-02-16 17:42) [5]

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

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

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2010.01.31;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
4-1224840675
Riply
2008-10-24 13:31
2010.01.31
Принцип работы CreateToolhelp32Snapshot


15-1259530217
Юрий
2009-11-30 00:30
2010.01.31
С днем рождения ! 30 ноября 2009 понедельник


2-1256560287
Aleks
2009-10-26 15:31
2010.01.31
Выравнивание колонок ListView по содержимому


2-1260358771
Phoenix
2009-12-09 14:39
2010.01.31
Проблема с TTreeView в Delphi 2009


2-1260327565
furyman
2009-12-09 05:59
2010.01.31
Excel в Delphi