Adresse d'une fonction CallBack dans une classe

Résolu
cs_Capa6T Messages postés 36 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 15 août 2012 - 3 déc. 2005 à 12:43
cs_Capa6T Messages postés 36 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 15 août 2012 - 3 déc. 2005 à 14:42
Bonjour,

J'ai un petit souçis pour récupèrer l'adresse d'une fonction CallBack dans une classe.

MaClasse.h :
------------
class MaClasse
{
protected:
int CALLBACK FctCallBack(LPARAM lParam1,LPARAM lParam2);
typedef int __stdcall FonctionCallBack(LPARAM,LPARAM);
FonctionCallBack *fcb; // Pointeur vers fonction Callback
public:
MaClasse(); // Constructeur
virtual ~MaClasse(); // Destructeur
};

MaClasse.cpp :
--------------
MaClasse::MaClasse() // CONSTRUCTEUR
{
// Récupère adresse fonction CallBack
fcb=FctCallBack; // Erreur Compilation ICI
}

MaClasse::~MaClasse() // DESTRUCTEUR
{
}

// Fonction CallBack
int CALLBACK MaClasse::FctCallBack(LPARAM lParam1,LPARAM lParam2)
{
return 0;
}


J'ai une erreur de compilation:
error C2440: '=' : cannot convert from 'int (__stdcall MaClasse::*)(long,long)' to 'int (__stdcall *)(long,long)'
There is no context in which this conversion is possible

Je tourne en rond..après plusieurs tests de cast différents je ne m'en sors pas.
Est-il possible de récupèrer l'adresse d'une fonction CallBack dans une classe ?
Si oui quelle est la solution svp ?
Merci.

4 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 déc. 2005 à 13:37
Ce problème a déja été traité plusieurs fois. Comme ta fonction n'est pas statique, elle prend un pointeur this implicite (convention d'appel thiscall). En fait, fcb et FctCallBack ne sont donc pas de même type.
Pour que ca marche, il faudra mettre FctCallBack en static (du coup, plus de pointeur this, et plus de problème)
3
cs_Capa6T Messages postés 36 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 15 août 2012 3
3 déc. 2005 à 14:19
Merci vecchio56,
J'avais un doute à ce sujet...je n'en ai plus maintenant.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 déc. 2005 à 14:34
Tout va bien, tu n'a plus qu'a passer chez le dentiste ;)
0
cs_Capa6T Messages postés 36 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 15 août 2012 3
3 déc. 2005 à 14:42
lol...c'est fait !
0
Rejoignez-nous