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

Windows Discussion :

Thread avec PeekMessage


Sujet :

Windows

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Points : 16
    Points
    16
    Par défaut Thread avec PeekMessage
    Bonjour,
    Je cherche à faire un thread qui effectuerai un boucle pour regardé et traiter les messages pendant que mon programme principale se déroule. Je n'arrive pas pas à interrompre mon traitement principal (je fais un boucle infini et je regarde les messages pour savoir si je clique sur un bouton). J'arrive à le faire sans le thread mais pas avec un thread.
    Fonction du thread :
    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
    static void * Interrupt(void * p_data)
    {
    	MSG msg;
    	int Message;
    	while(1)
    	{
    	Message=PeekMessage(&msg, Dlg,  0, 0,PM_REMOVE);
    	if(Message==-1)
    	{	MessageBox(Dlg,"Erreur d'acquistion","Erreur",NULL);
    		return (void*)-1;}
    	else	
    	{	TranslateMessage(&msg);
    		DispatchMessage(&msg);
    		if(msg.message==WM_COMMAND)
    				return(void *)1;
    		else
    				return(void *)0;
    	}}
    }
    Appel du thread dans ma boucle infini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    while(escape==0)
    				{				
    					retour=pthread_create(&thread,NULL,Interrupt,NULL);
    					if(totalRead_tmp>=10240000)
    .
    .
    .
    pthread_join (thread, NULL);
    					 if(retour==1)
    						escape=1;
    Voila j'espère que vous pourrez m'aider car il faut absolument que je passe par les threads car la boucle de message ralenti mon programme principal et je doit traiter des données très rapidement.
    Merci par avance

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Chaque thread possède sa propre file de messages.
    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
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par gofio79 Voir le message
    Je cherche à faire un thread qui effectuerai un boucle pour regardé et traiter les messages pendant que mon programme principale se déroule
    Tu raisonnes à l'envers : c'est n'est pas un autre thread qui doit mettre à jour l'application et le thread principal qui doit travailler, c'est le thread principal qui doit attendre (et donc mettre à jour l'affichage et traiter la file des messages) et tu dois effectuer ton travail dans un autre thread.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    En fait, c'est bon j'ai réussi sans faire de thread.
    Avec un if et c'est bon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(PeekMessage(&msg, Dlg,  0, 0,PM_REMOVE))	
    						{	TranslateMessage(&msg);
    							DispatchMessage(&msg);						
    						}
    Merci quand même de votre aide je le saurais pour la prochaine fois.

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

Discussions similaires

  1. [VB.net] Thread avec paramètres
    Par WriteLN dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/04/2005, 17h42
  2. thread avec wxworks
    Par moltes91 dans le forum wxWidgets
    Réponses: 12
    Dernier message: 08/04/2005, 14h56
  3. Thread avec C++
    Par pierrev1 dans le forum SDL
    Réponses: 3
    Dernier message: 18/03/2005, 13h59
  4. Thread avec une fonction membre d'une classe
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 01/03/2004, 01h15
  5. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 12h01

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