IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

 
 Ответить  Открыть новую тему 
> DC, GLRC, Лизбез нужен
TarasBer
сообщение 26.01.2012 11:02
Сообщение #1


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Ну я так понял, что DC - это описатель какой-то фигни, связанной с поверхностью рисования окна. Ну ладно.
Функций GetDC(H) возвращает описатель поверхности для данного H, это понятно.
Вопросы:
1. Может ли DC внезапно измениться во время жизни H?
2. Что делает ReleaseDC(H, DC), и зачем у этой процедуры два параметра, разве одного H не хватило бы?
3. Может ли GLRC внезапно "повиснуть в воздухе" (перестать быть связанным с поверхностью рисования H) во время жизни H?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 26.01.2012 12:03
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Цитата
1. Может ли DC внезапно измениться во время жизни H?
Вопрос к тому, можно ли один раз сохранить DC и потом его использовать отовсюду, не прибегая к вызову GetDC? Нет, нельзя. Гарантируется только неизменность DC между вызовами GetDC/ReleaseDC и между вызовами BeginPaint/EndPaint. Все остальное - вилами на воде писано. Может и не изменится. А вдруг?

Есть еще CS_OWNDC: Что делает стиль оконного класса CS_OWNDC?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 26.01.2012 12:38
Сообщение #3


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> Гарантируется только неизменность DC между вызовами GetDC/ReleaseDC

А, хорошо, а вот я, допустим, при создании окна делаю сразу же GetDC и не делаю ReleaseDC, то это так же плохо, как OwnDC?
И что насчёт GLRC? Не потеряет ли он окно, если я не заблокирую DC?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 26.01.2012 13:02
Сообщение #4


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Цитата
а вот я, допустим, при создании окна делаю сразу же GetDC и не делаю ReleaseDC
... и рано или поздно видишь сообщение "out of resources". Зачем оно тебе?

Цитата
И что насчёт GLRC?
А вот этого я не знаю, ибо с OpenGL знаком чуть больше чем поверхностно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 26.01.2012 13:17
Сообщение #5


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> ... и рано или поздно видишь сообщение "out of resources"

Почему? Я же только один раз сделал GetDC, при создании окна, и всё.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 26.01.2012 13:53
Сообщение #6


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Потому что WinAPI требует от тебя освободить ресурс после того, как ты его получил через GetDC и сделал с ним все что нужно. Чем меньше времени ресурс будет занят тобой - тем лучше. Windows - она вообще-то многозадачная, ага. И то, что ты не работаешь с ресурсом - не значит, что сама система с ним не работает, и что другие приложения с ним не работают - тоже не значит.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.04.2024 9:42
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"