begin process at 2012 05 28 10:26:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

CALLBACK dans une Classe => problême mot clef static !


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

CALLBACK dans une Classe => problême mot clef static !

vendredi 6 mai 2005 à 18:01:39 | CALLBACK dans une Classe => problême mot clef static !

Capa6T

Salut,

Une petite question à 2 euros...je cherche depuis un moment et je ne trouve pas la solution.

j'ai une classe bidon:

// Bidon.h
class Bidon
{
public: 
 Bidon(void);           // Construction
 virtual ~Bidon(void);  // Destruction
 int Variable;
private:
 static int CALLBACK TestCallBack(WPARAM wParam);
}
// Bidon.cpp
Bidon::Bidon(void)
{
 Variable=16;
}
Bidon::~Bidon(void)
{
}
int CALLBACK Bidon::TestCallBack(WPARAM wParam)
{
 if (Variable==16) Beep(1000,500);
return 0;

}

Ce code génére cette erreur:
error C2597: illegal reference to data member 'Bidon::Variable' in a static member function

Question: Comment je récupère la valeur de Variable dans la fonction TestCallBack
   qui est déclarée en static ??? je ne m'en sort pas...
Si je vire la déclaration static, je ne peut plus mettre en place mon CALLBACK et j'ai cette erreur de compilation:
error C2440: 'type cast' : cannot convert etc etc.... à la définition du callback.

Merci d'avance.

vendredi 6 mai 2005 à 19:38:37 | Re : CALLBACK dans une Classe => problême mot clef static !

Capa6T

Réponse acceptée !
Ok j'ai trouvé grâce à une info distillée par ymca2003...

Il suffit de rajouter ça dans le code:
// Bidon.cpp
#include "Bidon.h"

#define WM_GIVETHIS WM_USER // Message pour transmettre this au callback
Bidon *This;                // Mémorise Objet this



Bidon::Bidon(void)
{
// On passe le pointeur this au CallBack pour qu'il le mémorise
 this->TestCallBack(0,WM_GIVETHIS,0,this);
Variable=16;
}
Bidon::~Bidon(void)
{
}
int CALLBACK Bidon::TestCallBack(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{

if (uMsg==WM_GIVETHIS)
{
This=(Bidon *)lParam;
return 0;
}
 if (This->Variable==16) Beep(1000,500);
return 0;

}




J'ai mis en vert les changements. Bien sûr dans mon premier
post, j'avais été un peu court sur les paramètres du CallBack.
Evidement y'a un champ message et par chance un ULONG pour passer le pointeur this.

Merci ymca2003 et BruNews qui mon donné la soluce dans ce post plus particulièrement:
http://www.cppfrance.com/forum.v2.aspx?ID=422643
vendredi 6 mai 2005 à 19:42:57 | Re : CALLBACK dans une Classe => problême mot clef static !

Capa6T

Désolé mais avec cette police au dessus c'est illisible...je recopie =>

// Bidon.cpp
#include "Bidon.h"

#define WM_GIVETHIS WM_USER // Message pour transmettre this au callback
Bidon *This;                // Mémorise Objet this



Bidon::Bidon(void)
{
// On passe le pointeur this au CallBack pour qu'il le mémorise
 this->TestCallBack(0,WM_GIVETHIS,0,this);
Variable=16;
}
Bidon::~Bidon(void)
{
}
int CALLBACK Bidon::TestCallBack(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{

if (uMsg==WM_GIVETHIS)
{
This=(Bidon *)lParam;
return 0;
}
 if (This->Variable==16) Beep(1000,500);
return 0;

}




J'ai mis en vert les changements. Bien sûr dans mon premier
post, j'avais été un peu court sur les paramètres du CallBack.
Evidement y'a un champ message et par chance un ULONG pour passer le pointeur this.

Merci ymca2003 et BruNews qui mon donné la soluce dans ce post plus particulièrement:
http://www.cppfrance.com/forum.v2.aspx?ID=422643

dimanche 28 mai 2006 à 01:11:21 | Re : CALLBACK dans une Classe => problême mot clef static !

MuPuF

Bonjour, je comprend pas, pourquoi passer par le callback pour mettre this dans les variables globales ?

// Bidon.cpp
#include "Bidon.h"

Bidon *This;                // Mémorise Objet this



Bidon::Bidon(void)
{
// On passe le pointeur this au CallBack pour qu'il le mémorise
This=(Bidon *)lParam;
Variable=16;
}
Bidon::~Bidon(void)
{
}
int CALLBACK Bidon::TestCallBack(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{

 if (This->Variable==16) Beep(1000,500);
return 0;

}
Testé et approuvé lol ;-)
Surtout, faut faire un belle explication dans les commentaires du pourquoi on se fait chier lol


Cette discussion est classée dans : variable, static, void, callback, bidon


Répondre à ce message

Sujets en rapport avec ce message

void Static Virtual CALLBACK ? [ par anarchysniper ] Je dois créer une classe Timer avec sorte de gestion évènementielle à la manière des "events" des classes .NET. Mais comme ces "events" doivent être m Variable et méthodes statiques, comment faire ? [ par neodelphi ] Bonjour tout le monde !Je suis actuellement de me lancer dans la réalisation d'un jeu utilisant directX. Pour avoir une base de temps en fonction de l Problème de classe non static [ par Terminator59140 ] Bonjour tous le monde! J'ai un problème un peu énervant si je eut me permette. J'utilise Visual Studio 2008 et je créer un projet en c++. Le porjet es Accéder à une variable dans une focntion static de ma classe [ par aabhanane ] Bonjour à tous, je programme avec VC++ et j'ai une fonction définie comme suit: static BOOL CALLBACK DriverEnumProc(HACMDRIVERID hadid, DWORD dwInstan Probléme variable static et classe incompréhension [ par Booster ] Bonjour,Voilà, j'ai une incompréhension au niveau d'une variable static. Voici mon code :maclasse.hclass maclasse; //Ca me sert juste à ce que ma vari Surdéfinition statique (static) d'une variable membre [ par PetersonG ] Bonjour,Une drôle d'idée m'a fait surdéfinir en static une variable membre d'une classe parente, et, à ma grande surprise, le code compile sans problè Variables et fonctions. Déclaration & Accéssibilité ! [ par wizard512 ] Bonsoir,je souhaiterai savoir comment accédé a une variable déclaré dans une autre fonction.Faut t'il le spécifier lors de la déclaration de la variab error: variable or field declared void sous code:block Windows C++ [ par Topnotch ] Bonjour!Je tente de construire une fonction dans une classe qui ouvre un fichier. Dans le fichier .h, le compilateur me retourne un message d'erreur c (bool) probléme avec une variable bool [ par Xilofeon ] Salut a tousquestion d'un débutant confirmé lol !!!alors voila j'ai une variable bool a utilisé dans plusieur fonction dont 1 void dans le fichier .cp


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales