Главная страница
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.012 c
2-1260171599
pavel_guzhanov
2009-12-07 10:39
2010.01.31
Pascal Script в FastReport


4-1227702513
dmitry_12_08_73
2008-11-26 15:28
2010.01.31
Приветствую, как определить, пересекаются ли два прямоугольника


15-1259417380
koha!
2009-11-28 17:09
2010.01.31
Доступн для скачивания новый openSUSE11.2


15-1259333816
Демо
2009-11-27 17:56
2010.01.31
Ветку реестра может кто кинуть?


2-1259847059
Anastasia
2009-12-03 16:30
2010.01.31
Как передать значение функции и получить результат?