KillTimer sur un timer sans handle ???

Résolu
cs_nascimo Messages postés 5 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 16 juin 2008 - 21 juil. 2006 à 11:27
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 21 juil. 2006 à 13:31
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 ????

1 réponse

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
21 juil. 2006 à 13:31
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.
3
Rejoignez-nous