2010-11-21 4 views
0

ou autre poignée gdi, telle qu'une brosse à stylo. comment puis-je savoir est-ce valable?Comment est-ce que je sais que c'est un handle de région gdi valide?

+0

Pourquoi avez-vous besoin de cela? Puisque vous êtes celui qui crée et détruit les objets GDI, vous devez savoir s'ils sont valides ou non. – casablanca

+0

je viens de le créer, je ne sais pas si cela a réussi. – lovespring

+3

La plupart des fonctions GDI renverront un handle 'NULL' en cas d'échec. Vérifiez simplement la documentation MSDN pour les fonctions spécifiques qui vous intéressent. – casablanca

Répondre

5

ne jamais vous mettre dans une situation où vous pourriez vous tenir sur une poignée qui n'est pas valide. Si nécessaire, définissez le handle sur NULL après avoir appelé DeleteObject() afin qu'il soit complètement évident. En supposant qu'une fonction GDI vous donnera une valeur de retour FALSE parce que vous avez passé un mauvais handle n'est pas sûr.

+0

+1. En général, c'est le cas, mais en lisant son commentaire modifié, il veut vérifier si une fonction de création GDI a réussi. Échec crée return NULL. Pourquoi NULL? Les poignées GDI étaient des pointeurs. Elles ne le sont plus. – Joshua

+0

Ok, dans ce cas, appelez votre fonction CrashAndBurnMyAppBecauseIHaveANastyHandleLeakInMyProgram() personnalisée. –

2

La réponse est: d'où avez-vous obtenu le handle? En termes simples, c'est comme avec l'art: comment savez-vous que c'est authentique, pas un faux? Il y a quelques "heuristiques", mais la seule façon de travailler à 100% est de savoir d'où ça vient. Par conséquent, en ce qui concerne les régions GDI: vous devez uniquement approuver les handles de région renvoyés par les fonctions GDI.

:)

+0

Aime l'analogie. – Tergiver

0

Essayez GetObject() ou GetObjectType(). Ils devraient retourner NULL si le handle de l'objet n'est pas valide.

Je peux voir où vous voulez utiliser ceci pour le débogage. Dans un monde parfait, nous gardons la trace de nos objets et savons où ils sont en tout temps.

Notre monde n'est pas un monde parfait.

Questions connexes