Utilisation du settimer

titi4659 Messages postés 42 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 30 mars 2007 - 25 janv. 2007 à 13:00
amoweb Messages postés 20 Date d'inscription jeudi 30 novembre 2000 Statut Membre Dernière intervention 4 octobre 2008 - 23 juil. 2007 à 11:30
Bonjour,

je souhaiterai utiliser le SetTimer() mais j'ai des problèmes avec:

J'utilise bien une fonction callback dans laquelle je vais écrire dans un fichier.

le problème C que mon Timer ne se lance mm pas .

Voici le code:

#include <windows.h>
#include <winuser.h>
#include "stdio.h"

int test;

void CALLBACK timer(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime )
{
FILE *fichier;
int erreur;

   test=test+1;
   fichier=fopen("c:\\toto.txt","w");
    erreur=fputs("RING\n",fichier);
    fclose(fichier);
}

void main(int argc, char* argv[])
{
    printf("alarm application starting\n");
/* Set up a 5 second timer which calls alrm_bell */
   SetTimer(0, 0, 5000,(TIMERPROC) timer);
}

12 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 janv. 2007 à 13:55
Il se lance mais ton prog finit ilico derrière.
Faire du prog GUI pour cela.

ciao...
BruNews, MVP VC++
0
titi4659 Messages postés 42 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 30 mars 2007
25 janv. 2007 à 13:57
C'est à dire ???

J'ai mis une boucle infini derrière mon settimer et sa ne fait rien non plus ?
Il  ne rentre mm pas une fois dans ma fonction timer

A l'avance merci
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 janv. 2007 à 14:08
Si tu es dans une boucle infinie, tu ne pourras traiter rien d'autre.

ciao...
BruNews, MVP VC++
0
titi4659 Messages postés 42 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 30 mars 2007
25 janv. 2007 à 14:12
pourquoi il ne rentre mm pas une fois dans ma boucle ???

il faudrai que je mettre quoi alors comme code derrière mon SetTimer ???
ou aurais tu un exemple de code avec un SetTimer en C

A l'avance merci .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 janv. 2007 à 14:24
En C comme en C++ on fait du GUI, la console n'est plus réservée qu'à des usages très particuliers.

ciao...
BruNews, MVP VC++
0
titi4659 Messages postés 42 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 30 mars 2007
25 janv. 2007 à 15:01
Mon but est de le faire fonctionner dans un code en C sans fenetre.

En faite je fais un timer pour qu'il aille vérifier tout les x sec dans la base de registre et comparer une date;Si celle ci est inférieur a la date souhaité il l'a change;Ma fonction de comparaison fonctionne très bien , le problème est que je souhaite qu'elle soit exécuter tout le x secondes C pour cela que je fais un settimer.

A l'avance merci
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 janv. 2007 à 15:08
Utilise Sleep().

ciao...
BruNews, MVP VC++
0
titi4659 Messages postés 42 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 30 mars 2007
25 janv. 2007 à 15:17
Je ne peux pas utiliser de sleep() car j'ai d'autre action qui se deroule à la suite de ce timer
0
cs_magma Messages postés 198 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 18 mars 2011
26 janv. 2007 à 12:05
//---------------------------------------------------------
// Ce programme sans interface utilisateur
// emet un BIP toutes les 5 secondes ...
//---------------------------------------------------------
#include <windows.h>



// Traitement a intervalles reguliers ---------------------
void CALLBACK TimerProc(HWND a, UINT b, UINT c, DWORD d)
{
  MessageBeep(0);
}



//---------------------------------------------------------
int WINAPI WinMain(HINSTANCE a, HINSTANCE b, LPSTR c, int d)
{
  MSG  msg;
  UINT uTimer;
 
  // Premier traitement...
  MessageBeep(0);
 
  // ... puis, traitement a intervalles reguliers       
  uTimer = SetTimer(0, 1, 5000, TimerProc);
  
  while(GetMessage(&msg, NULL, 0, 0))
    DispatchMessage(&msg);



  KillTimer(0, uTimer);     
  return 0;
}
0
titi4659 Messages postés 42 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 30 mars 2007
29 janv. 2007 à 13:32
Merci Magma, mais je souhaiterai à la suite de ce timer faire plein d'instructtion en mm tps que le timer soit lancer.

Le problème qu'il se pose, c'est là avec ta boucle While ( ) , il n'execute pas la suite si on lui mets une instruction dérrière.

Aurais-tu une solution ?

A l'avance merci
0
cs_magma Messages postés 198 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 18 mars 2011
29 janv. 2007 à 19:11
Mets tes instructions AVANT la boucle while !
0
amoweb Messages postés 20 Date d'inscription jeudi 30 novembre 2000 Statut Membre Dernière intervention 4 octobre 2008
23 juil. 2007 à 11:30
Pourquoi tu n'utilise pas les threads?
Un thread avec une boucle et un Sleep(5000);
et un thread avec le reste du programme.
0
Rejoignez-nous