Помощь - Поиск - Пользователи - Календарь
Полная версия: DC, GLRC
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
TarasBer
Ну я так понял, что DC - это описатель какой-то фигни, связанной с поверхностью рисования окна. Ну ладно.
Функций GetDC(H) возвращает описатель поверхности для данного H, это понятно.
Вопросы:
1. Может ли DC внезапно измениться во время жизни H?
2. Что делает ReleaseDC(H, DC), и зачем у этой процедуры два параметра, разве одного H не хватило бы?
3. Может ли GLRC внезапно "повиснуть в воздухе" (перестать быть связанным с поверхностью рисования H) во время жизни H?
IUnknown
Цитата
1. Может ли DC внезапно измениться во время жизни H?
Вопрос к тому, можно ли один раз сохранить DC и потом его использовать отовсюду, не прибегая к вызову GetDC? Нет, нельзя. Гарантируется только неизменность DC между вызовами GetDC/ReleaseDC и между вызовами BeginPaint/EndPaint. Все остальное - вилами на воде писано. Может и не изменится. А вдруг?

Есть еще CS_OWNDC: Что делает стиль оконного класса CS_OWNDC?
TarasBer
> Гарантируется только неизменность DC между вызовами GetDC/ReleaseDC

А, хорошо, а вот я, допустим, при создании окна делаю сразу же GetDC и не делаю ReleaseDC, то это так же плохо, как OwnDC?
И что насчёт GLRC? Не потеряет ли он окно, если я не заблокирую DC?
IUnknown
Цитата
а вот я, допустим, при создании окна делаю сразу же GetDC и не делаю ReleaseDC
... и рано или поздно видишь сообщение "out of resources". Зачем оно тебе?

Цитата
И что насчёт GLRC?
А вот этого я не знаю, ибо с OpenGL знаком чуть больше чем поверхностно.
TarasBer
> ... и рано или поздно видишь сообщение "out of resources"

Почему? Я же только один раз сделал GetDC, при создании окна, и всё.
IUnknown
Потому что WinAPI требует от тебя освободить ресурс после того, как ты его получил через GetDC и сделал с ним все что нужно. Чем меньше времени ресурс будет занят тобой - тем лучше. Windows - она вообще-то многозадачная, ага. И то, что ты не работаешь с ресурсом - не значит, что сама система с ним не работает, и что другие приложения с ним не работают - тоже не значит.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.