Timer C++ & Methode non static [Résolu]

Messages postés
36
Date d'inscription
dimanche 9 mars 2003
Dernière intervention
21 mai 2009
- - Dernière réponse : luhtor
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Dernière intervention
28 juillet 2008
- 19 déc. 2005 à 18:00
bonjour,
je souhaiterais réaliser un timer dans une classe C++ qui appel une methode de cette meme class.
Mon pb est que cette classe ne dispose pas des propriétés d'une fenetre (CWnd).
Donc SetTimer(numTimer,Delay) ne marche pas car je n'arrive pas a mettre en place le WM_TIMER.
Ensuite j'ai essayé le SetTimer avec la fonction CALLBACK et ca ne marche que pour une fct C ou C++ static.
Donc si cé static j'ai plus acces a mes variables membres.

Y'a t'il une autre methode pour faire ce Timer ??
Le but etant de faire une attente d'une seconde environ mais que ca ne blok pas le refresh de ma fenetre.
Donc inutile de me parler de Sleep ou d'heure System dans une boucle...

Merci d'avance !
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Dernière intervention
28 juillet 2008
5
3
Merci
Moi j'utilise la libraire glib pour ca.

g_timeout_add(func, time, arg) exécute une certaine fonction toute est x milliseconde. (je suis pas sur des arguments)



http://developer.gnome.org/doc/API/2.0/glib/glib-The-Main-Event-Loop.html#g-timeout-add



Pour ton problème de static, ca deja été rabaché sur ce forum. Tu peux
utiliser une fonction static, a laquelle tu envois en argument le
pointeur de l'objet a modifié. C'est tout simple.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de luhtor
Messages postés
36
Date d'inscription
dimanche 9 mars 2003
Dernière intervention
21 mai 2009
0
Merci
Ha ouais, ca a pas l'air con ce que tu dis sur le passage de l'objet a ma fct timer !!
Cé un peu crad d'un point de vu POO mais moi ca me plait bien.

Mon, je vais essayer de faire ca !!
Merci luthor.

;lmkl
Commenter la réponse de watoubilly
Messages postés
36
Date d'inscription
dimanche 9 mars 2003
Dernière intervention
21 mai 2009
0
Merci
Bon j'essaye de faire ton truc et je vois pas trop comment faire.
J'ai ça...
Je voudrais afficher la variable "toto" de ma classe dans une boite de dialog.

Mais ou passer un poiteur sur mon objet a la methode static.

"Mon.h"
class CTestDlg : public CDialog
{
CString toto;


static VOID CALLBACK MyTimerProc(
HWND hwnd, // handle to window for timer messages
UINT message, // WM_TIMER message
UINT idTimer, // timer identifier
DWORD dwTime) // current system time
{
AfxMessageBox(toto);
}
}

"Mon.cpp"
CTestDlg::OnOK()
{
toto="allo";
::SetTimer(0, // handle to main window
3, // timer identifier
5000, // 5-second interval
(TIMERPROC) this->MyTimerProc); // timer callback
}

;lmkl
Commenter la réponse de watoubilly
Messages postés
36
Date d'inscription
dimanche 9 mars 2003
Dernière intervention
21 mai 2009
0
Merci
ATTENTION : Ma vrai classe n'herite de rien !!

;lmkl
Commenter la réponse de watoubilly
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Dernière intervention
28 juillet 2008
5
0
Merci
Et bien, tu peux pas passer un argument avec la fonction SetTimer ?
Doit surement y avoir un moyen. Mais comme j'ai jamais utilisé windows
en programmation, je peux pas trop t'aider :)

Si OnOK peut pas etre appelé plusieurs, tu peux créer un pointeur
static dans ta classe qui contient le pointeur de l'objet qui a appelé
le callback. Mais bon, c'est crade et ca ne s'applique peut etre pas
dans ton cas.
Commenter la réponse de luhtor

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.