Utilisation des void * avec Visual C++ 5 express

Signaler
Messages postés
80
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
24 mai 2007
-
Messages postés
199
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
28 février 2008
-
Bonjour à tous

Voilà j'ai un petit soucis, avec des void*

Je développe une dll en c++ sur vc++ 5 express qui utilise une librairie écrite en c.

Dans cette librairie, il y a des fonction callbacks que je dois définir avant de lancer toute fonction utilisant le réseau.

le prototype de ces fonctions est

void moncallback(void (*procédure_a_lancer))

comment déclarer en vc++ 5 express cette fonction en paramètre, je sais que c'est assez difficile à mettre en oeuvre.

Si quelqu'un peut m'aider.

Merci encor

Z.

7 réponses

Messages postés
199
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
28 février 2008

Quelle fonction en param ? Le callback ?

___________________
MVS - Most Valuable Student ( Microsoft)
Messages postés
80
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
24 mai 2007

je dois définir la fonction dans mon code comme suit :

monCallback( ( void (__cdecl *) (void) )methode_a_lancer);

pour pouvoir faire ça en manadgé j'ai défini ma méthode methode_a_lancer
comme suit :

static void methode_a_lancer(void* ptrThis)
{
.....
}

Aprés je dois caster ptrThis pour lancer une procédure qui éffectue le traitement à l'apparitioàn de l'événement géré par le callback
Messages postés
80
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
24 mai 2007

Donc c ma méthode à lancer que je passe en param à la fonction MonCallback
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Généralement pour mettre une fonction en param, on fait d'abord quelque chose dans ce genre

typedef void (__stdcall *ROUTINE)(UINT, LPCSTR)


pour ce simplifier la vie.


Ensuite on fait


int MaFonction (ROUTINE Fonction)


Voila. Je crois que c'est ça.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
199
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
28 février 2008

Oui, normalement ça fonctionne...

___________________
MVS - Most Valuable Student ( Microsoft)
Messages postés
80
Date d'inscription
jeudi 2 février 2006
Statut
Membre
Dernière intervention
24 mai 2007

ok

merci mais j'ai pas trés bien compris le typedef void (__stdcall *ROUTINE)(UINT, LPCSTR)

merci encor

Z.
Messages postés
199
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
28 février 2008

Grâce à ce typedef il te suffit de faire ROUTINE r = taFonction pour avoir un pointeur de fonction, sans s'embeter avec les para,theses habituelles...

___________________
MVS - Most Valuable Student ( Microsoft)