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

Visual C++ Discussion :

Problème de timer


Sujet :

Visual C++

  1. #1
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut Problème de timer
    Bonjour,

    Bien voilà, je suis surpris d'avoir un soucis avec les timers. J'ai parcouru les sujets concernant mon problème et je suis confronté à la même situation que la discussion suivante:
    http://www.developpez.net/forums/sho...probleme+timer
    Malheureusement, aucune solution ou explication du problème fût énoncée...

    Par contre, le timer que je crée est associé à une CDialog de type "popup" et non "child" comme décrit dans la discussion.

    D'autre part, j'inclue le fichier d'entête d'une autre classe, dans la quelle j'utilise aussi des timers.

    Le résultat au final est le même probleme qu'Alice, SetTimer() retourne bien l'id mais OnTimer() n'est jamais appellé.

    Sauriez vous d'ou cela peut venir?
    Il y a t'il un nombre limité de timer?

    Nicolas

  2. #2
    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,
    ou et comment tu as initialisé ton timer ?

  3. #3
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    Beh oui mais y'at-il du code dans l'événement OnTimer ??? Si y'a pas de code dedans ça risque de ne pas marcher.
    Et sans code source on ne peut pas t'aider...

  4. #4
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Citation Envoyé par farscape
    ou et comment tu as initialisé ton timer ?
    Je l'ai déclaré dans une fonction membre d'une classe de type CDialog de la manière suivante:
    et j'ai généré le message WM_TIMER via classwizard.

    Juste comme cela j'ai remarqué qu'il y avait deux messages WM_TIMER selon le filtre (dialog ou window), je crois avoir essayé avec les deux, mais le résultat a été le même. Quel est la différence entre ces deux messages?

    J'ai pourtant implémenté 4 autres timers dans mon appli, dont 3 pour une autre classe de type CDialog et un pour une classe fille de type CDialog instanciée dynamiquement à partir de cette dernière et là, j'ai aucun soucis!

    Une explication à mon problème du dessus? Si besoin de plus d'informations, dites moi.

    Bon we!

    Nicolas

  5. #5
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Citation Envoyé par Mat.M
    Beh oui mais y'at-il du code dans l'événement OnTimer ??? Si y'a pas de code dedans ça risque de ne pas marcher.
    Et sans code source on ne peut pas t'aider...
    Si il y a du code, de tête le voici:
    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
     
    void MaClasse::OnTimer(UINT nIDEvent) 
    {
        switch(nIDEvent)
        {
            case 1:
                 if(m_ncpt == 10) m_ncpt = 0;
    	     m_cProgressBar.SetPos(m_ncpt++);
                 break;
     
    	default:
    	      break;
        }    
     
    	// Call base class handler.
    	CDialog::OnTimer(nIDEvent);
    }

  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
    cette fonction (d'init du timer ) est appellée quand ? : avant ou aprés OnInitDialog ?

  7. #7
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Citation Envoyé par farscape
    cette fonction (d'init du timer ) est appellée quand ? : avant ou aprés OnInitDialog ?
    Pourtant bien après la fonction OnInitDialog().... C'est bizarre!

    Je vais prochainement tâcher de générer une autre classe dérivée de CDialog dans mon projet, et de lancer un timer pour voir le résultat.

    J'espère comprendre d'ou vient le soucis.

    Bon dimanche

    Nicolas

  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
    salut,
    tu as testé le retour de SetTimer ?

  9. #9
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Citation Envoyé par farscape
    tu as testé le retour de SetTimer ?
    Oui oui, j'ai bien testé le retour. Pour le code montré plus haut, SetTimer() me retourne bien l'identifiant 1.

  10. #10
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Donc peut être que je vois d'ou vient le soucis...

    En fait, je crée mon timer alors que je suis déjà dans le traitement d'un message pour éxécuter la fonction OnButton1(). Surement que le message du timer est traité une fois la fonction OnButton1() terminé... Je me trompe?

    Ce que je désirais faire, c'est faire évoluer une ProgressBar durant l'éxécution de la fonction OnButton1(), ceci en créant un timer!

    Une idée serait peut être de créer mon timer dans la fonction OnInitDialog(), puis selon l'état d'une variable globale, j'incrémente la position de ma ProgressBar. Mais ca m'embete quand même un peu de créer un timer alors que je ne m'en servirais qu'un petit peu à un moment donné.

    Quelle solution semblerait la plus simple pour remédier à cela?
    [EDIT] Je crois que ca devrait bien répondre à mon problème!
    pompe à messages


  11. #11
    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 ...,
    surtout si ton traitement ne laisse pas respirer l'application...

  12. #12
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Citation Envoyé par farscape
    surtout si ton traitement ne laisse pas respirer l'application...
    En effet...Sourire

    Nicolas

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

Discussions similaires

  1. Toujours un problème avec Timer
    Par adidas40 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/10/2006, 11h04
  2. Problème de Timer
    Par nikus_knx dans le forum MFC
    Réponses: 7
    Dernier message: 18/05/2006, 14h27
  3. Problème de Timer
    Par hammag dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 25/04/2006, 17h52
  4. [VC++ - MFC] Problème de Timer
    Par Alice9 dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2006, 13h51
  5. [VB6] Problème contrôle Timer et boucle For-Next ...
    Par Stéphane BEHMENBURG dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 01/12/2005, 17h36

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