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

C++/CLI Discussion :

Utilisation de System::Timers


Sujet :

C++/CLI

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 122
    Par défaut Utilisation de System::Timers
    Bonjour,
    J'essaie d'utiliser la classe Timers dans un projet C++/CLR

    Donc j'ai créé un projet CLR sous VISUAL STUDIO 2005.
    j'ai une winForm1 auto générée (Form.h) et un main.cpp pour la lancer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int main(array<System::String ^> ^args)
    {
    // Activation des effets visuels de Windows XP avant la création de tout contrôle
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false); 
     
    	// Créer la fenêtre principale et l'exécuter
    	Application::Run(gcnew Form1());
    	return 0;
    }
    Bon, j'arrive à créer des événement , pour manipuler différents objets que j'ajoute sur la winForm.

    Maintenant , je veux maitriser l'utilisation des system::timers, enfait plus concrètement , je veux qu'une fonction se lance à chaque laps de temps

    J'ai vu cet l'exemple :
    http://msdn.microsoft.com/fr-fr/libr...ers.timer.aspx
    et qui fonctionne parfaitement sur console. (et d'ailleurs je comprend pas pour quoi ça marche pas sur un projet winForm)

    Donc j'ai créé un événement click pour un bouton que j'ai ajouté.
    ensuite j'ai inséré ces 3 lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    Timers::Timer^ _timer1;
    _timer1 = gcnew Timers::Timer(4000);
    _timer1->Elapsed += gcnew ElapsedEventHandler(action);
    }
    après je dois définir la fonction "action", c'est là ou y a les erreurs.
    donc j'ai fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	private :  System::Void action(Object^ source, ElapsedEventArgs^ e ){
    				  textBox1->Text="bouton cliqué y a 4 secondes";
    			 }
    Je build , voici l'erreur que j'obtiens :
    1>c:\[...]\Form1.h(210) : error C3867: &'sound::Form1::action'*: liste d'arguments manquante dans l'appel de fonction*; utilisez 'sound::Form1::action' pour créer un pointeur vers membre
    1>c:\[...]\Form1.h(210) : error C3350: 'System::Timers::ElapsedEventHandler'*: un constructeur délégué attend 2 argument(s)
    Donc j'ai essayé d'ajouter static pour la fonction action comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    private :  static System::Void action(Object^ source, ElapsedEventArgs^ e ){
    		  textBox1->Text="bouton cliqué y a 4 secondes";
    }
    j'obtiens cette erreur :
    error C2227: la partie gauche de '->Text' doit pointer vers un type class/struct/union/générique
    je pense que j'ai mal définie ma fonction action, alors ma question est comment faire ça proprement.
    Merci toute aide est appréciée

  2. #2
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Par défaut
    Salut,
    Tu te complique la vie inutilement!
    Il faut utiliser le Timer comme n'importe quel contrôle (un bouton , une textBox... )!

    Prends tout simplement un Timer dans la "boite à outils" ( il est en bas de la partie "Composants" ) et fais le glisser n'importe ou sur ta feuille et il apparaitra en dessous de celle-ci.

    En suite, dans ta fonction bouton1_click tu met par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
    {
         timer1->Interval = 4000;// réglage d'une tempo de 4000ms
         timer1->Enabled = true;//démarrage du timer
    }
    puis crée la fonction tick dans les propriétés du timer rubrique événements:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e)
    		 {
    			 textBox1->Text="bouton cliqué y a 4 secondes";
                             timer1->Enabled = false;//pour arrêter le timer1 ( sinon, il se redéclenchera toutes le 4s! )
    		 }
    Et voilà, ça doit marcher ( enfin je crois )
    Amuse toi bienBye.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par défaut
    Citation Envoyé par bertry Voir le message

    Et voilà, ça doit marcher ( enfin je crois )
    Je confirme, c'est comme cela que j'utilise les timers et cela marche nickel ..

    Bon courage

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 122
    Par défaut Merci
    oui ça marche, merci pour l'astuce, enfin, j'avoue que j'oublie les "boites à outils" de visual studio et j'ai tendance à codé à la main, vu que j'ai appris à le faire de cette façon.

    Quoi que , merci infiniment.

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

Discussions similaires

  1. utilisation d'un timer
    Par jiraya43 dans le forum MFC
    Réponses: 2
    Dernier message: 04/05/2006, 16h52
  2. [Débutant] Utilisation de "system"
    Par SebRs dans le forum Débuter
    Réponses: 16
    Dernier message: 25/04/2006, 23h44
  3. [Débutant] Utilisation d'un timer
    Par mickael777 dans le forum MFC
    Réponses: 7
    Dernier message: 28/10/2005, 11h40
  4. [Kylix] PB Utilisation libc.system
    Par Louargant Bertrand dans le forum EDI
    Réponses: 1
    Dernier message: 19/06/2003, 18h36
  5. [Stratégie] Utiliser un systeme de bufferisation
    Par arnolanf dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 31/10/2002, 16h49

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