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++ Discussion :

MFC (visual 6.0) : threads et l'interface


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut MFC (visual 6.0) : threads et l'interface
    Bonjour,

    Je suis en train de reprendre un logiciel très conséquent développé sous visual 6.0 il y a maintenant plus de 20 ans.

    J'aimerais modifier l'interface de ce logiciel depuis un thread (qui sert de serveur avec des connexion sockets TCP). Seulement, comme j'en ai pris l'habitude en C# ce n'est pas possible au premier abord.

    J'ai consulté des posts sur les users-interfaces-threads mais je n'ai pas compris grand chose. De plus j'utilise des threads (pthread.h) qui me permettent de ne threader qu'une fonction et toutes les solutions que j'ai pu trouver utilisent une classe entière pour les threads (CWinThread)...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    /* Ce que j'utilise comme Thread : */
    pthread_t monThread
    pthread_create(&monThread,NULL,maFonction,parametres);
    Je recherche donc une solution pour permettre à mes threads de modifier ponctuellement mon interface, comme le invoke en C#.


    Si quelqu'un pourrait me guider, cela m'aiderait beaucoup.

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Le runtime C windows propose des fonctions beginthread(), beginthreadex(), qui utilise les même services système que les fonctions Win32 BeginThread() et BeginThreadEx(). Ces fonctions ont un comportement analogue à la fonction pthread_create().
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonjour,

    En fait comme pagugu parle de Invokeen C#, je pense que sont problème n'est pas tant de créer le thread,
    que de permettre au(x) thread(s) créé(s) de modifier des élements graphiques sans

    Si tu n'as pas accès aux fonctions Invoke des fenêtres,
    tu peux utiliser des PostMessage pour resynchroniser dans le thread d'affichage un appel d'un thread de travail.

    voir Comment travailler sur des objets MFC à partir d'un thread de travail (working thread) ?

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut
    Merci BlueMonkey c'est effectivement mon problème.
    Je vais essayer les PostMessage, c'est dommage, sur l'exemple de la FAQ on a l'envoie mais pas la réception du message.

    Mais je pense que je peux trouver d'autres exemples.

    Merci en tout cas, je laisse le poste "non-résolu" au cas ou je n'arrive pas à maîtriser les PostMessage.

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Salut,

    C'est dommage, sur l'exemple de la FAQ on a l'envoie mais pas la réception du message.
    Pour réceptionner un message dans le thread principal de la fenêtre, il faut définir des Messages Privés.
    Si tu regarde bien en bas du lien sur les PostMessage il y a un lien vers Comment définir un message privé ?

Discussions similaires

  1. [MFC] Visual .NEY, MFC71, windows 2000/XP
    Par romeo9423 dans le forum MFC
    Réponses: 1
    Dernier message: 31/08/2005, 19h54
  2. Réponses: 5
    Dernier message: 10/05/2005, 10h22
  3. [MFC] CArchive dans une thread
    Par Kaori dans le forum MFC
    Réponses: 12
    Dernier message: 11/04/2005, 15h26
  4. [MFC] Cherche Timer avec thread
    Par romeo9423 dans le forum MFC
    Réponses: 17
    Dernier message: 09/03/2005, 10h33
  5. [MFC] Objet COM et thread !?
    Par Kevgeii dans le forum MFC
    Réponses: 3
    Dernier message: 13/12/2004, 18h33

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