vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
20 août 2004 à 20:26
jpthomasset
Messages postés95Date d'inscriptionsamedi 19 juin 2004StatutMembreDernière intervention20 avril 2010
-
20 août 2004 à 22:42
J'ai décidé d'encapsuler mes fenêtres dans des classes, mais je me trouve confronté à un problème: en gros je n'arrive pas à changer de WndProc en utilisant une fonction qui fait partie de la classe. Voici un code qui n'a pas de sens mais qui illustre ce probleme:
jpthomasset
Messages postés95Date d'inscriptionsamedi 19 juin 2004StatutMembreDernière intervention20 avril 2010 20 août 2004 à 22:42
Salut,
Si tu veux profiter des avantages des classes pour cette fonction, il faut noter une chose : En c++, quand tu appele une fonction d'une classe, elle prend en premier parametre le fameux pointeur 'this', ce qui permet lors de l'execution de savoir dans quelle instance la fonction est executé.
Ce parametre est entierement géré par le compilateur, mais il faut savoir qu'il existe. Par contre en déclarant ta fonction en static, alors ce pointeur n'existe pas puisque la fonction n'est pas éxécuté dans le contexte d'une instance de classe, mais un peu comme une fonction C classique.
Bon, pou résoudre ton problème, c'est assez simple il suffit de creer une fonction WindowProc Statique qui s'occupera de retrouver l'instance de la classe a laquelle correspond ta fenetre et appelera le traitement souhaité. Pour retrouver l'instance de ta classe, il suffit de placer le pointeur de cette classe dans le USER_DATA de la fenetre.
Bon l'explication commence a etre longue... regarde plutot ce lien qui est beaucoup plus clair : WindowProc As Class method
A ta place, je jetterais un oeil sur les MFC ou wxWindows, ca t'eviteras de refaire ce que qq'un a déjà fait ;)