Beaucoup de procédures des API Windows, ou même de bibliothèques tierces, acceptent un paramètre de call-back
dont le type est un pointeur de procédure. Cependant, on aimerait lui transmettre un pointeur de méthode, ne
fut-ce que pour avoir des informations de contexte supplémentaires au sein du call-back.
Comme le tutoriel
Combiner des procédures et des méthodes vous l'explique,
il n'est possible de transmettre un pointeur de méthode à la place d'un pointeur de procédure que si la procédure en
question est prévue pour : qu'elle possède un paramètre "inutile" en première place. Or dans le cas que nous examinons
maintenant, nous n'avons pas la main sur la définition de la procédure de
call-back, puisqu'elle appartient soit
à Windows, soit à une bibliothèque tierce dont nous n'avons peut-être même pas le code source.
Toute la problématique réside donc en ceci : obtenir un pointeur sur une procédure qui, lorsqu'on l'appelle avec
des arguments donnés, appelle elle-même une méthode dont la signature est identique, mais qui évidemment demande
un paramètre implicite Self supplémentaire.