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 :

Créer un Timer


Sujet :

MFC

  1. #1
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut Créer un Timer
    Salut,

    Dans la Faq il est décrit que pour réaliser un timer avec intervalle de 2s on fais comme suit :

    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
    void CMyView::OnStartTimer() 
    {
        m_nTimer = SetTimer(1, 2000, 0);
    }
     
    void CMyView::OnStopTimer() 
    {
        KillTimer(m_nTimer);  
    }
     
    void CMyView::OnTimer(UINT nIDEvent) 
    {
        switch(nIDEvent)
        {
            case 1:MessageBeep(0xFFFFFFFF);  // Beep
            default:break;
        }    
        // Call base class handler.
        CView::OnTimer(nIDEvent);
    Alors est-ce que le fait d'insérer ces lignes suffit pour que le programme exécute le contenu de la fonction OnTimer toute les 2 secondes car avec Borland c'était juste une controle à rajouter...

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Attention, tu as oublié un break dans ton switch() (ou bien, un commentaire disant que l'absence de break est intentionnelle). Et utilise NULL au lieu de 0, le troisième paramètre est un pointeur de fonction.

    Et en théorie, il faut ajouter ces lignes AINSI QUE la déclaration de OnTimer() dans la MessageMap si tu n'as pas utilisé les wizards.


    Le contrôle Timer de Borland ou Visual, c'est une autre philosophie où un timer Windows est attaché au contrôle. Ici, un timer Windows est attaché directement à la View.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Quelque chose m'échappe...

    Admettont que je déclare ces 3 fonctions à l'aide du Wizzard, ensuite je n'ai rien d'autre à faire et le programme ira exécuter le contenu de OnTimer toutes les 2 secondes pour l'exemple précédent...

    Autre question, je ne suis pas obligé de passé nIDEvent en paramétre, la fonction peut marcher sans passage de paramètre ?

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    OnTimer est appelé par le systéme, ce n'est pas toi qui passe l'argument
    celui-çi identifiant le numéro de timer ...

  5. #5
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Pour déclarer, ces 3 fonctions j'ouvre le classwizzard dans ma fenetre Dialog, et je dois choisir un Object IDs, si je choisis celui de ma fenetre Dialog, j'ai la fonction WM_TIMER, est-ce celle là que je dois choisir ?

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    avec l'assistant WM_TIMER créera OnTimer
    les deux autres fonctions sont des fonctions utilisateurs, libre à toi de les implanter ou non ....

  7. #7
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    D'accord alors l'assistant m'a créé la fonction OnTimer, et maintenant si je veux choisir l'intervalle de temps pour lequel le programme va exécuter le contenu, j'insere ta fonction ou un parametre peut etre régler ?

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    ma fonction suggérait que l'appel pouvait être fait par un bouton..
    tu peux très bien mettre en place ton timer dans la fonction d'initialisation
    de la dialog :OnInitDialog() ou OnInitialUpdate() pour une CFormView.

  9. #9
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    D'accord je crois avoir pigé, si je met :

    dans la fonction OnInitDialog(), tout le long de l'exécution, le programme ira exécuter toute les 2 secondes, le code contenu dans la fonction OnTimer()...

  10. #10
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    oui !

  11. #11
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Merci...

  12. #12
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetTimer(1, 2000, NULL);
    Fait exécuter le code de la fonction OnTimer() (plutôt qu'un callback extérieur) toutes les deux secondes et lui passe 1 en paramètre.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Ok je te remercie pour la précision...

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

Discussions similaires

  1. Créer un timer sans Timer()
    Par houpli dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/03/2010, 21h26
  2. Créer un timer?
    Par UnSofteuxAmateur dans le forum Débuter
    Réponses: 2
    Dernier message: 25/06/2008, 09h55
  3. Créer un Timer (ou équivalent) dans un projet sans Form
    Par avigeilpro dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 13/05/2007, 17h52
  4. créer un timer
    Par hansaplast dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/03/2006, 17h11
  5. [][Timer] Créer un Timer sans utiliser le composant
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 01/10/2003, 11h04

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