Главная страница
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.013 c
1-1234886728
Drowsy
2009-02-17 19:05
2010.01.31
DLL BCB из Дельфи


15-1259206910
koha!
2009-11-26 06:41
2010.01.31
Что лучше?


6-1211636100
may be I am noob...
2008-05-24 17:35
2010.01.31
Подключение


6-1211916995
Darth Avenger
2008-05-27 23:36
2010.01.31
ServerSocket и ClientSocket - "склеивание" принятых строк


15-1258913368
Alkid
2009-11-22 21:09
2010.01.31
А что это Каспер ругается на наш форум?