Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1195 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C, C++] Timer et fonction membre d'une classe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C, C++] Timer et fonction membre d'une classe

n°354826
Profil sup​primé
Posté le 07-04-2003 à 15:19:34  answer
 

Je souhaite utiliser un timer dans mon application , j'appelle donc la fonction  
 

Code :
  1. SetTimer(
  2.     HWND hWnd, // handle of window for timer messages
  3.     UINT nIDEvent, // timer identifier
  4.     UINT uElapse, // time-out value
  5.     TIMERPROC lpTimerFunc  // address of timer procedure
  6.    );


 
Cela marche bien, mais le problème vient du dernier paramètre à fournir qui est une fonction CALLBACK à appeler chaque fois que le timer se déclenche...
 

Code :
  1. VOID CALLBACK GlobalEngineTimer(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
  2. {
  3. //trucs a faire
  4. //comme ca cela fonctionne
  5. }


 

Code :
  1. VOID CALLBACK MaClasse::GlobalEngineTimer(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
  2. {
  3. //trucs a faire
  4. //mais pas comme cela
  5. }


 
 
Tout fonctionne bien si la fonction est déclarée normalement, mais je veux que cette fonction fasse partie d'une classe qui encapsule plein d'autres choses... mais problème, dans ce cas la, à la compilation il refuse de compiler avec la fonction callback de la classe.
 
Est ce que quelqu'un sait si on peut le faire d'une part et d'autre part si c'est le cas, comment on peut le faire ???

mood
Publicité
Posté le 07-04-2003 à 15:19:34  profilanswer
 

n°354840
bounty
Posté le 07-04-2003 à 15:26:32  profilanswer
 

Tu as essayer de déclarer le SetTimer à l'interieur de ta classe?

n°354849
SoWhatIn22
Posté le 07-04-2003 à 15:31:18  profilanswer
 

billyboy78 a écrit :

Je souhaite utiliser un timer dans mon application , j'appelle donc la fonction  
 

Code :
  1. SetTimer(
  2.     HWND hWnd, // handle of window for timer messages
  3.     UINT nIDEvent, // timer identifier
  4.     UINT uElapse, // time-out value
  5.     TIMERPROC lpTimerFunc  // address of timer procedure
  6.    );


 
Cela marche bien, mais le problème vient du dernier paramètre à fournir qui est une fonction CALLBACK à appeler chaque fois que le timer se déclenche...
 

Code :
  1. VOID CALLBACK GlobalEngineTimer(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
  2. {
  3. //trucs a faire
  4. //comme ca cela fonctionne
  5. }


 

Code :
  1. VOID CALLBACK MaClasse::GlobalEngineTimer(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
  2. {
  3. //trucs a faire
  4. //mais pas comme cela
  5. }


 
 
Tout fonctionne bien si la fonction est déclarée normalement, mais je veux que cette fonction fasse partie d'une classe qui encapsule plein d'autres choses... mais problème, dans ce cas la, à la compilation il refuse de compiler avec la fonction callback de la classe.
 
Est ce que quelqu'un sait si on peut le faire d'une part et d'autre part si c'est le cas, comment on peut le faire ???


fais des recherche sur le forum: une callback au sens "C" du terme ne peut pas être une méthode de classe SAUF si celle-ci est statique. Il y a deja eu de nombreux post à ce sujet.
 
Donc fonction membre statique, dans laquelle tu commence par rechercher l'instance de la classe qui est concernée.

n°354850
Profil sup​primé
Posté le 07-04-2003 à 15:32:02  answer
 

Bounty a écrit :

Tu as essayer de déclarer le SetTimer à l'interieur de ta classe?


 
 
Oui oui, en fait l'appel à SetTimer() se fait dans le contructeur de la classe

n°354851
SoWhatIn22
Posté le 07-04-2003 à 15:32:19  profilanswer
 

Bounty a écrit :

Tu as essayer de déclarer le SetTimer à l'interieur de ta classe?


La fonction SetTimer est une fonction de l'API win32...

n°354853
Profil sup​primé
Posté le 07-04-2003 à 15:34:11  answer
 

sowhatin22 a écrit :


fais des recherche sur le forum: une callback au sens "C" du terme ne peut pas être une méthode de classe SAUF si celle-ci est statique. Il y a deja eu de nombreux post à ce sujet.
 
Donc fonction membre statique, dans laquelle tu commence par rechercher l'instance de la classe qui est concernée.


 
Ok merci je vais regarder de ce coté la, mais que veux tu dire par "rechercher l'instance de la classe qui est concernée"
???

n°355150
SoWhatIn22
Posté le 07-04-2003 à 19:11:32  profilanswer
 

billyboy78 a écrit :


 
Ok merci je vais regarder de ce coté la, mais que veux tu dire par "rechercher l'instance de la classe qui est concernée"
???


Quand la méthode statique de la classe est appelée, tu n'as accès qu'aux variables statiques de la classe. Si tu veux excecuter une méthode non statique, et donc reliée à une instance, alors il faut savoir de quelle instance il s'agit. C'est comme une callback de type "C", saut que tu as accès aux membres et méthodes statiques de la classe, qui peuvent être privés et donc inaccessibles si tu utilise une "vraie" callback de type "C".


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C, C++] Timer et fonction membre d'une classe

 

Sujets relatifs
Fonction time en C ?pas de html avec la fonction str_replace
[c++] problème avec ifstream et fonction getlineEncore une fonction sur les Strings....
[Qt] quelle fonction pour intecepter la fermeture de la fenêtre d'appje Cherche la fonction qui surcharge un INT en un VARCHAR !!!!
Probleme avec la fonction scrollToProblème avec un appel de fonction
fonction fwrite[PHP] probleme avec la fonction date()
Plus de sujets relatifs à : [C, C++] Timer et fonction membre d'une classe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR