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

Threads & Processus C++ Discussion :

Thread -> WaitForSingleObject() && Application -> Bloquée


Sujet :

Threads & Processus C++

  1. #21
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Si mes souvenirs sont bons, c'est plus WM_USER + x mais WM_APP + x dû à de sombres histoires de framework additionnels.
    Ha ? Il va falloir que je révise mes sources alors mais l'esprit est là.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  2. #22
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 21
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Un thread de travail (tes threads 1 et 2) sont probablement des thread de travail ou encore Working Thread ne doit pas modifier l'interface graphique.

    Il doit :
    • Envoyer un message spécifique à l'interface graphique WM_USER + x (à définir, c'est ton message utilisateur) avec des paramètres wParam et lParam qui permettent à l'interface graphique de savoir ce que veut le working thread. Pour cela, il faut que le working thread connaisse le handle HWND (et pas le CWnd *) de l'interface graphique. En général, c'est passé en paramètre lors de la création du thread.
    • Ce message doit être envoyé par SendMessage ou PostMessage (SendMessage est bloquant et attend que le message soit traité par la l'interface graphique, PostMessage ne fait que poster et retourne immédiatement)
    • L'interface graphique doit intercepter le message WM_USER + x dans le MESSAGE_MAP et faire le traitement en fonction des différents paramètres reçus (dans wParam et lParam)
    Bonjour,

    Je ne vois pas trop quoi faire du handle HWND. Je reprends mon code seulement aujourd'hui, ai cherché pas mal d'informations sur internet, mais n'ai rien trouvé de concret. La plupart des tutoriels se contentent de montrer comment définir son propre message, comment envoyer un message avec SendMessage() ou GetMessage(). Les exemples choisis ne nécessitent pas de passer des paramètres à la fonction de traitement du message, je n'ai donc pas récolté beaucoup d'informations.

    J'ai mon propre message, la fonction associée, d'en-tête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LRESULT NomFonction(WPARAM wParam, LPARAM lParam)
    Maintenant, j'imagine que dans mon thread de travail je vais devoir envoyé des messages via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    ,
    de façon à ce que ce handle me serve à quelque chose. Cependant, je ne vois pas du tout comment procéder, notamment par un message utilisateur, et encore moins ce qui doit être mis dans WPARAM et LPARAM. Je veux dire par là, quel(s) type(s) ? Je comptais n'envoyer que des entiers ou des chaînes de caractères (CString). Ensuite, comment identifier la "commande" dans la fonction de traitement du message. Par exemple, comment distinguer une demande de SetStep() d'une demande de StepIt() pour ma barre de progression. Enfin, comment créer et modifier ma barre de progression en utilisant le handle de ma fenêtre d'application ?

    Désolé, mais j'ai vraiment pris du temps à chercher ça, sans trouver.

    Merci par avance !

  3. #23
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 464

  4. #24
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 21
    Par défaut
    Ah , merci, ça me donnera un deuxième support puisque j'avais déjà imprimé tout ça (...). D'ailleurs, mon problème ne se situait pas vraiment au niveau de la définition de messages utilisateurs, ni même des fonctions associées. Je me demande si tu as lu .

    Plus sérieusement, savoir comment définir ses propres messages et les fonctions associées est très bien, mais savoir ce qui précède plus la manière d'implémenter les fonctions est plus utile.

    Bref, j'ai réglé mon problème. Si jamais quelqu'un venait à rencontrer le même souci que moi, voici un lien utile :
    Updating a CProgressCtrl from a multi-threaded application

    Merci à vous pour les pistes.

  5. #25
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 464
    Par défaut
    Je pensais qu'il ne te manquait que le mécanisme de routage des messages vers la fonction.
    Le lien montre comment faire ce routage.

    Qu'est-ce qui te bloquait si ce n'est pas ce routage des messages ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 9
    Dernier message: 04/04/2011, 10h20
  2. mon application est bloquée, freeze
    Par ericaix13 dans le forum C#
    Réponses: 11
    Dernier message: 28/10/2010, 20h07
  3. L'application se bloque lors de l'execution
    Par charouel dans le forum Windows Forms
    Réponses: 5
    Dernier message: 22/10/2009, 18h31
  4. [Serveur J2EE] Faire tourner un thread dans un serveur d'applications
    Par Pierre-Yves VAROUX dans le forum Java EE
    Réponses: 3
    Dernier message: 13/10/2005, 14h10

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