En quoi ChildWindowFromPointEx et ChildWindowFromPoint sont-ils différents du paramètre “flags”?

Les API Windows ont les fonctions ChildWindowFromPoint() et ChildWindowFromPointEx() et diffèrent par le fait que ce dernier a le paramètre uFlags spécifiant les fenêtres à ignorer.

Il semble que si je transmets CWP_ALL dans ChildWindowFromPointEx() j’obtiendrai exactement le même effet que dans ChildWindowFromPoint() .

La seule différence dans le paramètre uFlags ? Puis-je utiliser ChildWindowFromPointEx() partout et passer CWP_ALL lorsque j’ai besoin du comportement ChildWindowFromPoint() ?

Si cela peut vous aider, j’ai piraté une application de test rapide qui appelle les deux fonctions et est entrée dans le USER32.DLL désassemblé pour voir où vont les appels.

Pour ChildWindowFromPoint , après un préambule, j’ai atteint ce point:

enfant

Le traitement principal a été délégué à l’appel au 75612495 .

Ensuite, pour ChildWindowFromPointEx , ChildWindowFromPointEx dans l’assembly et récupère ceci:

enfantex

Comme ce point d’entrée est la cible de l’appel de la première fonction, il me semble assez clair que ChildWindowFromPoint appelle ChildWindowFromPointEx , sans doute avec uFlags défini sur CWP_ALL (ma connaissance de l’assembleur est limitée mais j’ai bien call – CWP_ALL est défini sur zéro).

Si vous souhaitez toujours utiliser ChildWindowFromPointEx avec CWP_ALL, vous pouvez simplement utiliser ChildWindowFromPoint ().

Si vous souhaitez toujours utiliser ChildWindowFromPoint, vous pouvez simplement utiliser ChildWindowFromPointEx avec CWP_ALL.

ChildWindowFromPoint est équivalent à ChildWindowFromPointEx avec CWP_ALL.

Conseil: utilisez ChildWindowFromPointEx (vous pourrez peut-être un jour utiliser d’autres indicateurs)