IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Evénement à une heure précise


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Février 2007
    Messages : 38
    Par défaut Evénement à une heure précise
    Bonjour à tous,

    Une fois encore merci de vous intéresser à mon problème

    Celui est simple en fait
    Je cherche à exécuter une méthode à une heure précise
    J'ai déjà vu un sujet similaire ici : http://www.developpez.net/forums/showthread.php?t=291

    Sauf que moi ce n'est pas périodique et je souhaiterais par exemple appeler une méthode x à 15h30 aujourd'hui et malheureusement ce n'est pas indiqué dans le sujet cité au dessus.

    Si quelqu'un a un cerveau à prêter pour l'infirme que je suis...

    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Février 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Février 2007
    Messages : 38
    Par défaut
    Bon ben dans mes recherches, j'ai vu la méthode "OnTimeChange()" Je vais donc l'utiliser avec la méthode "OnTimer" afin de m'assurer que l'heure du système soit gérée
    C'est pas beau mais bon, çà a le mérite de fonctionner

  3. #3
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    OnTimeChange est appelé quand l'utilisateur change l'heure systeme, pas quand le temps s'écoule ...

    il faut que tu créés un Timer (voir SetTimer() et KillTimer())
    tu lui donnes par exemple un temps de 1000 ms si tu veux etre réactif à la seconde ...

    tu définies un évènement OnTimer() dans lequel tu vas lire l'heure systeme que tu compares à l'heure de déclenchement souhaité.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    void CMaFenetre::OnTimer(UINT_PTR nIDEvent)
    {
      if (nIDEvent==ID_MON_TIMER)
      {
        CTime time(CTime::GetCurrentTime());    // l'heure actuelle
     
        // m_TimeEvent est une variable membre de type CTime de ta classe
        // ça correspond à l'heure de déclenchement
     
        if (time.GetHour()==m_TimeEvent.GetHour() &&
              time.GetMinute()==m_TimeEvent.GetMinute() &&
              time.GetSecond()==m_TimeEvent.GetSecond())
        {
          // faire quelque chose ici
        }
      }
      else
        CWnd::OnTimer(nIDEvent);    // remplacer CWnd par le nom de la classe de base
    }
    @+

  4. #4
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Bonjour,

    La solution proposée par stephdim est aussi celle à laquelle j'avais pensé. C'est comme ça que je ferais si j'étais à ta place.

  5. #5
    Membre averti
    Inscrit en
    Février 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Février 2007
    Messages : 38
    Par défaut
    En effet, mais je voulais limiter le nombre de relance du timer.

    Du coup ce que je pensais faire c'est un truc du genre :

    SetTimer() sur la différence entre l'heure actuelle et l'heure à laquelle je veux appeler une méthode

    Mais comme ce délai peut être très long de l'ordre de la journée, je voulais rajouté un OnTimeChange() pour m'assurer que l'heure du pc n'est pas modifiée entre temps car il peut s'en passer des choses pendant une journée ne serait ce que l'heure d'été et d'hiver ou même dans ma boite ou l'heure des pcs est synchronisée sur serveur. Du coup la méthode OnTimeChange() permet de réajuster le timer justement en faisant killtimer() et en rappelant la méthode settimer() avec le nouveau délai recalculé

    Cela évite d'avoir la méthode OnTimer appelée sur des périodes courtes inutilement de façon intempestive.

    C'est le mieux que j'ai pu trouver mais je reste un peu sur ma fin.
    Je trouve pas çà très beau de faire des timers aussi long...
    Je ne sais pas comment fonctionne le timer sous visual mais si c'est un truc genre calcul du nombre de secondes restantes c'est assez moyen... Car sur de longues périodes, je sens venir les décalages...

  6. #6
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Ah, ok, je comprends mieux ce que tu disais. Effectivement, ton point de vue est intéressant.

    Si tu trouves que ton timer est trop long, tu peux aussi l'exécuter toutes les heures en calculant à chaque fois le temps qui te sépare de ta date fatidique. Et dès que ce temps est inférieur à une heure, tu modifies ton timer pour qu'il se lance à l'heure voulue, comme tu l'as fait...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Meta Refresh à une heure précise ?
    Par Mister Paul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 19/09/2008, 02h40
  2. [PHP] Exécuter du code PHP à une heure précise
    Par Ice-tea dans le forum Langage
    Réponses: 2
    Dernier message: 09/01/2007, 22h46
  3. Réponses: 6
    Dernier message: 17/08/2006, 09h40
  4. Exécuter une action à une heure précise
    Par Rhadamanthe59 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 09/02/2006, 23h12
  5. [PPC][C#] Reveiller un PPC à une heure précise
    Par aeled dans le forum Windows Mobile
    Réponses: 5
    Dernier message: 27/12/2005, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo