Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по удалению GDI-объектов после использовани 
:(
    Опции темы
Волод
Дата 28.7.2005, 11:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











В одной из книг, которую я читаю, постоянно натыкаюсь на такой код:
- DeleteObject(SelectObject(hdc, GetStockObject(BLACK_PEN)));
Я читал про то, что все GDI ресурсы, типа кистей, перьев, шрифтов после использования должны быть уничтожены, но не понимаю смысл такой конструкции. Получается, ранее созданное и загруженное в контекст перо через этот код мы уничтожили, но ведь на его место мы протолкнули другое, которое также занимает ресурсы/память – так в чем тогда разница?

  Вверх
Earnest
Дата 28.7.2005, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



А оно занимает другие ресурсы-память.
GDI-объекты (кисть и т.д.) вовсе не живут в контексте - оно существует отдельно.
Думай об HBRUSH как об указателе на динамическую память.
Тебя же не удивляет, что после присваивания указателю другого значения, выделенная ранее память теряется (если ее явно не освободить).
В контексте хранится только HANDLE (указатель!) объекта, а не сам объект.
Windows NT (2000, XP) освобождают занатые GDI-ресурсы, но только по завершению процесса. Если интенсивно менять (создавать) GDI-объекты при отрисовке окна, и не освобождать все корректно, свободные HANDLE'ы быстро заканчиваются.

Это тоже надо в форум Windows API.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.