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

MFC Discussion :

Multithreaded User Interface


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 32
    Par défaut Multithreaded User Interface
    Bonjour !

    J'ai un souci avec la l'utilisation des MFC. Je sais ca devient vieux, plus personne ne les utilise .... et pourtant ! ;o)

    Voila mon pb :
    dans mon application j'ai un thread non MFC qui tourne et qui envoie des messages à une fenetre de mon appli. Cette fenetre traite ensuite les messages, mais parfois le traitement est couteux et peut demander du temps. Du coup je n'ai plus la main sur mon application, je ne peux pas arreter le process, etc ...

    Ce que je voudrais, c que la fenetre qui recoit les notifications, ait une boucle de message a part, indépendante de la boulce des messages de l'appli. Cela de manière à toujours garder la main, même si les traitements effectués par cette fenêtre sont longs.

    J'ai un peu tout essayé avec la classe CWinThread mais sans succès.

    Quelqu'un aurait-il une solution la dessus ?

    merci
    Mike

  2. #2
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    j'ai pas tout compris...

    pour ne pas bloquer ton gui, tu veut créer un second gestionnaire d'evenements?

    mais si il n'est pas lui meme dans un thread, cela bloquera quand meme ton gui, non?

    la solution que je voit, c'est de lancer un nouveau thread pour tes traitements "longs"...

  3. #3
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 32
    Par défaut
    merci de l'interet que tu portes a mon pb
    mon thread envoie un message WM_TOTO à ma fenetre
    celle ci recoit le message et lance un traitement.

    Pendant le traitement j'aimerai faire autre chose dans mon appli (appuyer sur un bouton par ex), seulement vu que je suis deja en train de repondre a un message, il faut que j'attende la fin de ce traitement pour lancer une commande.

    je veux que la boulce des messages (GetMessage / Translate / Dispatch) de l'application ne se preoccupe pas de ma fenetre qui recoit les notifications. La fenetre qui recoit les notifs est une fenetre mfc de l'appli mais elle n'a rien a voir avec, je veux donc que ses traitements soient independant des actions que l'utilisateur effectue sur les autres fenetres.

    yo ?
    merci
    Mike

  4. #4
    Membre expérimenté
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Par défaut
    Salut,

    et si la fenêtre qui reçoit le message crée elle même un thread pour la gestion de la tâche qui lui a été envoyé?

  5. #5
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 32
    Par défaut
    Salut Neo41,

    c pour l'instant la seule solution valable. J'aurais voulu y arriver autrement mais pas facile de tout comprendre sur les mfc.

    merci
    Mike

  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
    moi j'implanterai un autre thread au niveau de la fenetre de traitement.
    celui ci realise les traitements couteux et envoi d'eventuels infos a la fenetre d'affichage.
    et de maniere generale:
    si il y a plusieurs traitements a lancer le mieux c'est a chaque requete du thread de traitement:
    Création d'un thread qui fait son boulot et se ferme quand il a fini.

    Note:
    J'ai un souci avec la l'utilisation des MFC. Je sais ca devient vieux, plus personne ne les utilise .... et pourtant ! ;o)
    venir dire ça sur un forum dedié aux MFC c'est de la provoque.
    certes c'est vieux mais ça a evolué ,le "plus personne ne les utilise" je demande a voir .


  7. #7
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 32
    Par défaut
    Salut Farscape !

    non c pas de la provoque de dire que plus personne n'utilise les mfc ... ce n'est pas non plus vrai ...mais vu que c abandonné par microsoft, il faut s'assoir sur les evo, les bugs, etc ... enfin bref.

    Pour mon pb, j'utilise un thread interne a ma fenetre. Celle ci insere les messages dans une liste et le thread les traite aussi vite qu'il le peut. Je ne peux pas utiliser plusieurs thread, je dois eviter d'empiler des messages identiques dont le tps de traitement est long, donc un seul thread me convient et ca marche.

    Par contre je continue qd meme a avoir des ralentissements dans mes autres fenetres. Mon application est une application MDI. Je pensais que cela pouvait venir des commandes OnUpdate... mais qd j'ouvre une boite de dialogue il n'y a plus de commandes OnUpdate et pourtant j'ai des ralentissements...

    une idee ?
    merci
    Mike

  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
    Citation Envoyé par Mike@Nestor
    Salut Farscape !

    non c pas de la provoque de dire que plus personne n'utilise les mfc ... ce n'est pas non plus vrai ...mais vu que c abandonné par microsoft, il faut s'assoir sur les evo, les bugs, etc ... enfin bref.

    Pour mon pb, j'utilise un thread interne a ma fenetre. Celle ci insere les messages dans une liste et le thread les traite aussi vite qu'il le peut. Je ne peux pas utiliser plusieurs thread, je dois eviter d'empiler des messages identiques dont le tps de traitement est long, donc un seul thread me convient et ca marche.

    Par contre je continue qd meme a avoir des ralentissements dans mes autres fenetres. Mon application est une application MDI. Je pensais que cela pouvait venir des commandes OnUpdate... mais qd j'ouvre une boite de dialogue il n'y a plus de commandes OnUpdate et pourtant j'ai des ralentissements...

    une idee ?
    merci
    Mike
    et bien tu es tres mal informé ,MS n'a pas l'intention a ce jour d'arreter les MFC ,
    qui sont donc toujours disponibles dans Visual 2005 (MFC8.0) avec de nouvelles fonctionnalités .
    a moins que je ne soit plus a jour et que tu as un article de microsoft confirmant ton propos ?
    Parce que moi j'ai ça sous la main:
    http://msdn.microsoft.com/visualc/whidbey/mfc2005/default.aspx


  9. #9
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 32
    Par défaut
    je n'utilise pas VS2005 et jusqu'a present les documentations MFC n'etaient plus dispo dans la plateforme SDK. De plus dans vs2003 plein de fonctionnalités MFC presentes dans VS6 ont ete supprimées. C'etait donc une constatation personnelle mais erronée, désolé.

    En tout cas je suis tres content de savoir cela, il va donc falloir que je passe sous VS2005. Ca me rassure beaucoup car je ne comprenais pas comment faire une appli sans code semi interprete ni garbage collector avec .NET. MFC is still alive ! excellent

    merci pour tes lumieres, et si tu en as concernant mon pb je suis preneur

  10. #10
    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
    pour tes ralentissements si tu as des boucles de traitement ça peut etre normal.
    essaye d'integrer une pompe a messages dans tes traitements voir faq:
    http://c.developpez.com/faq/vc/?page...rk#PumpMessage

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/05/2007, 15h00
  2. [Yahoo UI] Utilisation de la librairie Yahoo user interface
    Par jeromek dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 04/05/2007, 14h09
  3. Utilisation de UIA (User Interface Application Block)
    Par the big ben 5 dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 16/11/2006, 09h09
  4. Réponses: 5
    Dernier message: 14/11/2006, 15h57
  5. Réponses: 18
    Dernier message: 09/08/2006, 23h18

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