Форум: "Основная";
Текущий архив: 2010.01.31;
Скачать: [xml.tar.bz2];
ВнизХраним 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c