Можно ли дублировать дескриптор GDI? - PullRequest
1 голос
/ 07 мая 2010

Или в моем конкретном случае область окон (HRGN)?

Обновлено: проблемы следующие:

У меня есть коллекция объектов, каждый из которых может содержатьHRGN.Эти области, когда они были получены, освобождаются, когда объект разрушается.Поскольку некоторые из этих объектов хранятся в std :: vector, я должен определить оператор присваивания.

До сих пор я только назначал эти HRGN, но это ошибка.Если я дублирую такие объекты, каждый из них попытается удалить один и тот же регион, а один из них будет использовать несуществующий регион.

Ответы [ 3 ]

4 голосов
/ 07 мая 2010

Вы не можете сделать копию дескриптора HRGN, но вы можете получить копию, используя функцию CombineRgn.

3 голосов
/ 07 мая 2010

Нет, это невозможно. Объекты GDI поддерживают только один дескриптор на объект.

2 голосов
/ 07 мая 2010

Обернуть каждую HRGN в объект подсчета ссылок, смоделированный после любого умного указателя, например, shared_ptr.

...