Tekila48
Messages postés15Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention26 mars 2006 30 janv. 2006 à 15:50
Très bon code, merci, tu m'as fait gagner plusieurs heures ;)
@CLETER :
J'ai le meme probleme. En fait, le paramètre doit être un pointeur sur une fonction (TIMERPROC = VOID CALLBACK*), et j'arrive pas à en créer un dans une classe. (j'ai un message du genre 'cannot modify data'). Par contre, ca marche si je pointe vers une fonction constante (globale quoi).
J'ai contourné le problème en me faisant une fonction globale qui renvoie la fonction que je veux en fonction de l'ID du timer (wParam), mais c'est pas très propre.
Si quelqu'un sait comment faire (créer une variable dans la classe qui pointe vers la fonction au moment de l'initialisation ? j'ai pas le temps d'essayer), ca m'interesse...
cleter
Messages postés92Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention15 mai 2006 15 mars 2005 à 15:36
Génial,
ta source est tres claire, et bien commenté!! j'ai compri les timer (enfin je crois)
et pour nanoubis: oui tu peu fair ce que tu veux avec son code, si tu veu incrémenter une varialbe, tu regarce le fichier winmain.c et sous "case WM_TIMER:" ti met ta variable a incrémenté (jexagere un peu) mai c ca.
Mai j'aurai une ptite question tres tres bete:
je me suis créé une classe "classtimer" qui lance un timer (jusque la, ca resemble a ta source et d'ailleur je men suis inspiré), mai pluto que d'avoir le timer qui lance la fonction "WindowProcedure", je voudrai que ca lance "mafonction":
j'arrive a le faire, et ca marche nikel, mais (j'aime pa quan ya des mais ...), mais, ca marche si "mafonction" est une fonction global, c'est a dir qu'elle ne fait pa parti de ma classe. Si j'essaye de lancé "classtimer::mafonction2" avec le timer:
bein la ca ne veu plus me compilé :'(
l'erreur est la suivante (au passage je suis sous VC++):
error C2440: 'type cast' : cannot convert from '' to 'void (__cdecl *)(struct HWND__ *,unsigned int,unsigned int,unsigned long)'
si quelqu'un a déja eu le pb....
cs_nanoubis
Messages postés2Date d'inscriptionmardi 20 avril 2004StatutMembreDernière intervention27 avril 2004 11 mai 2004 à 11:18
Bonjour!
je sais bien que maintenant ça fait un petit moment que tu as écris ce code, mais j'aimerai bien te poser quelques questions.
C'est que je n'ai pas tout compris au niveau des messages et tout et tout. Par exemple, je voudrais, à d'autres moment du code, afficher des messages comme "coucou".
De plus, penses - tu que sur la base de ton code, on peut ne pas faire que écrire un message mais toujours à une fréquence donnée ? par exemple, incrémenter une variable tout simplement ou faire des choses un peu plus compliquer ?
merci d'avance!
et en tout cas, je te remercie d'avoir écrit ce code, et surtout aussi propre et aussi bien commenté.
nanou
NitRic
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 août 2011 14 juin 2003 à 00:57
un projet vide? c normal ... tu dois te créer un projet Win32 Application, ce code(class) à besoin d'un handle et d'une proc pour fonctionner. Win32 Only, désolé ... Bref, pour que mon code fonctionne bien il faut:
ton fichier main.cpp par exemple ou ce trouve la proc d'entrer de ton programme
le fichier timer.h et timer.cpp
dans le fichier 'main.cpp' tu inclus timer.h
#include "timer.h"
et ensuite pour l'utiliser
Timer tmr;
tmr.InitTimer(handle, proc, id);
tmr.Interval(interval_en_milli);
tmr.StartTimer(); pour démarrer
tmr.StopTimer(); pour stopper ...
Voilà ...
Beubye && @++;
~(.:: NitRic ::.)~
jeancrien
Messages postés6Date d'inscriptionmercredi 12 février 2003StatutMembreDernière intervention30 juin 2003 4 avril 2003 à 16:17
Salut, très très bon code ... en tous cas pour un débutant c'est génial ça évite d'avoir à décortiquer une machine à gaz sans commentaires....
Chapeau bas et continue comme ça NitRic !
Par contre, j'arrive à récupérer la classe Timer mais je n'arrive à la compiler que dans un projet Win32 type HelloWorld. Si je prends un projet vide j'ai une erreur "error C2061: syntax error : identifier 'Timer'".
Si quelqu'un peut me guider, ça m'éviteras des heures perdus à rechercher la cause. Merci !
Hugadsl
Messages postés6Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention12 janvier 2003 26 janv. 2003 à 18:35
Salut tt le monde je debute et j'aimerais compiler le timer mais sans project file je ne vois pas comment faire (si j'ai dit une trop grosse connerie dites le moi)
@++
Hugadsl
Messages postés6Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention12 janvier 2003 26 janv. 2003 à 18:34
Salut tt le monde je debute et j'aimerais compiler le timer mais sans project file je ne vois pas comment faire (si j'ai dit une trop grosse connerie dites le moi)
@++
Sockrate
Messages postés1Date d'inscriptionmardi 31 décembre 2002StatutMembreDernière intervention31 décembre 2002 31 déc. 2002 à 03:19
tes sources sont tjrs aussi pratique ;)
NitRic_
Messages postés13Date d'inscriptionvendredi 29 juin 2001StatutMembreDernière intervention20 mars 2002 24 déc. 2001 à 02:36
MFC == Microsoft Fondation Class;
Si tu veux avoir la vie facile alors utilise ceci, tu doit avoir Visual C++.
vanpet
Messages postés149Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention 5 février 2006 23 déc. 2001 à 13:39
je vais passer pour un lamer mais c quoi les mfc ?????
30 janv. 2006 à 15:50
@CLETER :
J'ai le meme probleme. En fait, le paramètre doit être un pointeur sur une fonction (TIMERPROC = VOID CALLBACK*), et j'arrive pas à en créer un dans une classe. (j'ai un message du genre 'cannot modify data'). Par contre, ca marche si je pointe vers une fonction constante (globale quoi).
J'ai contourné le problème en me faisant une fonction globale qui renvoie la fonction que je veux en fonction de l'ID du timer (wParam), mais c'est pas très propre.
ULONG CALLBACK Timer_Event(HWND hwnd, UINT msg, UINT wParam, UINT lParam)
{
if(wParam == FIRST_TIMER) return App.FirstTimer_Event(hwnd, msg, wParam, lParam);
if(wParam == SECOND_TIMER) return App.SecondTimer_Event(hwnd, msg, wParam, lParam);
return 0; // si ne correspond à aucun ID_TIMER
}
Si quelqu'un sait comment faire (créer une variable dans la classe qui pointe vers la fonction au moment de l'initialisation ? j'ai pas le temps d'essayer), ca m'interesse...
15 mars 2005 à 15:36
ta source est tres claire, et bien commenté!! j'ai compri les timer (enfin je crois)
et pour nanoubis: oui tu peu fair ce que tu veux avec son code, si tu veu incrémenter une varialbe, tu regarce le fichier winmain.c et sous "case WM_TIMER:" ti met ta variable a incrémenté (jexagere un peu) mai c ca.
Mai j'aurai une ptite question tres tres bete:
je me suis créé une classe "classtimer" qui lance un timer (jusque la, ca resemble a ta source et d'ailleur je men suis inspiré), mai pluto que d'avoir le timer qui lance la fonction "WindowProcedure", je voudrai que ca lance "mafonction":
SetTimer(hWnd, 123, 3000, (TIMERPROC)(mafonction2));
j'arrive a le faire, et ca marche nikel, mais (j'aime pa quan ya des mais ...), mais, ca marche si "mafonction" est une fonction global, c'est a dir qu'elle ne fait pa parti de ma classe. Si j'essaye de lancé "classtimer::mafonction2" avec le timer:
SetTimer(hWnd, 123, 3000, (TIMERPROC)(classtimer::mafonction2));
ou
SetTimer(hWnd, 123, 3000, (TIMERPROC)(mafonction2));
bein la ca ne veu plus me compilé :'(
l'erreur est la suivante (au passage je suis sous VC++):
error C2440: 'type cast' : cannot convert from '' to 'void (__cdecl *)(struct HWND__ *,unsigned int,unsigned int,unsigned long)'
si quelqu'un a déja eu le pb....
11 mai 2004 à 11:18
je sais bien que maintenant ça fait un petit moment que tu as écris ce code, mais j'aimerai bien te poser quelques questions.
C'est que je n'ai pas tout compris au niveau des messages et tout et tout. Par exemple, je voudrais, à d'autres moment du code, afficher des messages comme "coucou".
De plus, penses - tu que sur la base de ton code, on peut ne pas faire que écrire un message mais toujours à une fréquence donnée ? par exemple, incrémenter une variable tout simplement ou faire des choses un peu plus compliquer ?
merci d'avance!
et en tout cas, je te remercie d'avoir écrit ce code, et surtout aussi propre et aussi bien commenté.
nanou
14 juin 2003 à 00:57
ton fichier main.cpp par exemple ou ce trouve la proc d'entrer de ton programme
le fichier timer.h et timer.cpp
dans le fichier 'main.cpp' tu inclus timer.h
#include "timer.h"
et ensuite pour l'utiliser
Timer tmr;
tmr.InitTimer(handle, proc, id);
tmr.Interval(interval_en_milli);
tmr.StartTimer(); pour démarrer
tmr.StopTimer(); pour stopper ...
Voilà ...
Beubye && @++;
~(.:: NitRic ::.)~
4 avril 2003 à 16:17
Chapeau bas et continue comme ça NitRic !
Par contre, j'arrive à récupérer la classe Timer mais je n'arrive à la compiler que dans un projet Win32 type HelloWorld. Si je prends un projet vide j'ai une erreur "error C2061: syntax error : identifier 'Timer'".
Si quelqu'un peut me guider, ça m'éviteras des heures perdus à rechercher la cause. Merci !
26 janv. 2003 à 18:35
@++
26 janv. 2003 à 18:34
@++
31 déc. 2002 à 03:19
24 déc. 2001 à 02:36
Si tu veux avoir la vie facile alors utilise ceci, tu doit avoir Visual C++.
23 déc. 2001 à 13:39