[VC++] utilisation des timers

utilisation des timers [VC++] - C++ - Programmation

Marsh Posté le 30-05-2002 à 09:44:45    

je voudrais faire un prog tout con qui m'affiche une boite de dialogue toutes les 2 sec par exemple.
J'utilise pour cela les fcts CWnd::SetTimer et CWnd::OnTimer.
Dans ma fct CmyprojectDlg::OnInitDialog je fais:
SetTimer(1, 2000, 0);
et je complete la fct suivante :
void CmyprojectDlg::OnTimer(UINT nIDEvent)
{
 AfxMessageBox("toto" );
 MessageBeep(0xFFFFFFFF);
}
 
et le pb c qu'il ne se passe rien lorsque je lance mon appli.
Aurai-je oublie quelque chose?

Reply

Marsh Posté le 30-05-2002 à 09:44:45   

Reply

Marsh Posté le 30-05-2002 à 13:44:42    

:bounce: UP!!!

Reply

Marsh Posté le 30-05-2002 à 13:48:27    

un peu plus de précisions ? tu passes bien par le classwizard pour créer ton OnTimer() ?

Reply

Marsh Posté le 30-05-2002 à 13:55:21    

Non, je l'ai cree a la barbare!!

Reply

Marsh Posté le 30-05-2002 à 14:00:16    

ha :)
 
regarde dans ton code, tu as une table définie par des macros qui 'mappe' tes fonctions à des messages :
 
BEGIN_MESSAGE_MAP(tonDialogue, CDialog)
 
et juste en dessous les définitions message -> procédure. tu dois rajouter ON_WM_TIMER().

Reply

Marsh Posté le 30-05-2002 à 14:01:15    

Ce que je voudrais savoir, c'est est ce que le programme appelle automatiquement la fct OnTimer une fois que SetTimer a ete appellee? Ou est ce qu'il faut dire a ma fenetre principale que si elle recoit le message WM_TIMER, il faut appeller la fct OnTimer?

Reply

Marsh Posté le 30-05-2002 à 14:02:00    

excuse j'avais pas vu que tu avais reposte

Reply

Marsh Posté le 30-05-2002 à 14:04:48    

try58 a écrit a écrit :

(1) Ce que je voudrais savoir, c'est est ce que le programme appelle automatiquement la fct OnTimer une fois que SetTimer a ete appellee? (2) Ou est ce qu'il faut dire a ma fenetre principale que si elle recoit le message WM_TIMER, il faut appeller la fct OnTimer?  



(2) est la réponse correcte, car ton handler peut avoir n'importe quel nom. la table de définition des messages sert justement à dire aux mfc quelle fonction appeler à la place de la fonction par défaut.

Reply

Marsh Posté le 30-05-2002 à 14:05:01    

C comment la syntaxe exacte pour rajouter le message parce moi je n'ai rien.
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()

Reply

Marsh Posté le 30-05-2002 à 14:05:57    

ça doit ressembler à  
 
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)  
  ON_WM_TIMER()
END_MESSAGE_MAP()

Reply

Marsh Posté le 30-05-2002 à 14:05:57   

Reply

Marsh Posté le 30-05-2002 à 14:07:52    

le mieux est encore de supprimer ta fonction OnTimer, et de la recréer via le ClassWizard, tu seras sur de ne rien oublier


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 30-05-2002 à 14:08:43    

Harkonnen a écrit a écrit :

le mieux est encore de supprimer ta fonction OnTimer, et de la recréer via le ClassWizard, tu seras sur de ne rien oublier


effectivement :D

Reply

Marsh Posté le 30-05-2002 à 14:09:39    

Harkonnen a écrit a écrit :

le mieux est encore de supprimer ta fonction OnTimer, et de la recréer via le ClassWizard, tu seras sur de ne rien oublier  




 
Le pb c'est que sous VB7, je n'ai pas trouve le class wizard (enfin si il existe)

Reply

Marsh Posté le 30-05-2002 à 14:10:12    

try58 a écrit a écrit :

 
 
Le pb c'est que sous VB7, je n'ai pas trouve le class wizard (enfin si il existe)  




vc7 je voulais dire

Reply

Marsh Posté le 30-05-2002 à 14:11:33    

try58 a écrit a écrit :

 
vc7 je voulais dire  




dans le ClassExplorer, clic droit sur la classe concernée => "Add Event", créer un évènement sur WM_TIMER


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 30-05-2002 à 14:13:28    

Harkonnen a écrit a écrit :

 
dans le ClassExplorer, clic droit sur la classe concernée => "Add Event", créer un évènement sur WM_TIMER  




Add event n'apparait pas, je peux juste ajouter une fct ou une variable. C louche!!

Reply

Marsh Posté le 30-05-2002 à 14:15:27    

Je peux me tromper aussi, je ne l'ai pas sous les yeux. Mais je sais qu'il y a un Add Event qqpart. Cherche dans les menus ou sur tous les clics droits que tu pourras faire   :)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 30-05-2002 à 14:34:20    

Je viens de verifier sur un VC++6 et y a bien la fonctionnalite que tu me dis (Add New message handler un truc dans ce genre) mais sous VC++7 et ben y pas.

Reply

Marsh Posté le 30-05-2002 à 14:38:02    

:heink:  
je vérifierai ce soir, mais j'étais persuadé de l'avoir vu...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 30-05-2002 à 14:39:30    

tu as essayé le ON_WM_TIMER() ?

Reply

Marsh Posté le 30-05-2002 à 14:40:02    

ok merci du coup de main!!

Reply

Marsh Posté le 30-05-2002 à 14:45:24    

youdontcare a écrit a écrit :

tu as essayé le ON_WM_TIMER() ?  




oui j'ai essayer mais ca ne marche toujours pas!!

Reply

Marsh Posté le 30-05-2002 à 16:15:24    

youdontcare a écrit a écrit :

ça doit ressembler à  
 
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)  
  ON_WM_TIMER()
END_MESSAGE_MAP()  




 
Je me suis plante de Cdialog, c pour ca que ca ne marchait pas.
Maintenant ca va beaucoup mieux!!  :)  
Merci les gars!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed