Как я узнаю, что это действительный дескриптор региона gdi? - PullRequest
0 голосов
/ 22 ноября 2010

или другая ручка gdi, например, кистьоткуда мне знать, действительно ли это?

Ответы [ 3 ]

5 голосов
/ 22 ноября 2010

Вы должны никогда оказаться в ситуации, когда вы можете держаться за недопустимый дескриптор. При необходимости установите дескриптор в NULL после вызова DeleteObject (), чтобы он был совершенно очевиден. Предполагая, что функция GDI даст вам возвращаемое значение FALSE, потому что вы передали плохой дескриптор, это небезопасно.

2 голосов
/ 22 ноября 2010

Ответ: откуда вы взяли ручку?

Проще говоря, это похоже на искусство: откуда вы знаете, что оно подлинное, а не подделка?Есть некоторая «эвристика», но единственный способ 100% - это узнать, откуда она.

Итак, что касается областей GDI: вы должны доверять только тем дескрипторам областей, которые возвращаются функциями GDI.

:)

0 голосов
/ 11 декабря 2017

Попробуйте GetObject() или GetObjectType().Они должны возвращать NULL, если дескриптор объекта недействителен.

Я вижу, где вы хотите использовать это для отладки.В идеальном мире мы отслеживаем наши объекты и всегда знаем, где они находятся.

Наш мир не идеален.

...