KillTimer sur un timer sans handle ??? [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 30 mai 2006
Statut
Membre
Dernière intervention
16 juin 2008
-
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
-
Voila mon problème, je n'arrive pas à killer mon timer car je n'ai pas son handle ...

void __fastcall TraitementTimer(int temps) {
  MSG msg;
  HWND gnhandle;
  SetTimer(NULL, 2, temps, NULL);


  while (GetMessage(&msg, NULL, 0, 0)) {
    if (msg.message == WM_TIMER) {
      p_socket->EnvoiDonneesSocket("y.timer finiz", socket_windev, 0);
    }
  }
  KillTimer(gnhandle, msg.wParam);
}

J'arrive à récupérer son identifiant grâçe à wParam mais pour le reste, je séche
des idées ????
A voir également:

1 réponse

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Un timer n'a pas de handle. C'est plutôt celui de la fenêtre à laquelle tu veux attacher ce timer. Ce handle n'est pas obligatoire car on peut utiliser un timer dans un programme sans fenêtre. Donc pour killer un timer, son identificateur suffit. C'est le 2ème paramètre passé à SetTimer(). Puisque tu as mis 0 pour le 1er paramètre, il faudra donc faire pareil avec la fonction Killtimer() en lui passant 0 comme 1er paramètre. Dans ton code, il parait que KillTimer()  ne sera jamais appelée. Voici un petit exemple de ce qu'on peut faire:

int compteur=0;
SetTimer(0, 2, 10000, 0);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
    if (msg.message == WM_TIMER)  Beep(1000,1000);
    compteur++;
    if(compteur==3)
         {
              KillTimer(0,2);
              break; // sortir de la boucle while
         }
}

Ce petit exemple émet un bip toutes les 10 secondes. Au bout du troisième bip, le timer est détruit.