Главная страница
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.011 c
15-1259184616
Юрий
2009-11-26 00:30
2010.01.31
С днем рождения ! 26 ноября 2009 четверг


3-1233777154
Noir
2009-02-04 22:52
2010.01.31
Обновление


15-1257757458
Alx2
2009-11-09 12:04
2010.01.31
Умер Гинзбург


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


2-1260171599
pavel_guzhanov
2009-12-07 10:39
2010.01.31
Pascal Script в FastReport