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 :

PeekMessage & Multithreading


Sujet :

Windows

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut PeekMessage & Multithreading
    Salut, je vais essayer de décrire autant que possible mon soucis.

    J'ai mis en place un framework de thread basé sur l'api win32 (CreateThread...), et synchronisation avec des sections critiques.
    Et également un framework GUI toujours sur l'api win32, pompe à message, et WindowProc.

    Cela fonctionne parfaitement ^^, exécution de plusieurs threads qui chacun crée plusieurs fenêtres windows, ca tourne pas de soucis, windows gère bien les messages, je pense avoir fait ce qu'il fallait.

    Je travaille généralement sur mon pc de bureau, avec XP et un visual un peu vieillot. Mais j'ai juste changé de pc en fait, j'ai voulu travaillé un peu sur mon portable (même insall de XP, chuuuut) et visual 2008 express (j'ai essayé également avec visual 2010)

    Et là, ca ne fonctionne plus
    Pour avoir chercher à comprendre, c'est PeekMessage qui retourne toujours FALSE !
    J'irais pas expliquer pourquoi j'utilise un méthode non bloquante pour observer la message queue, c'est pas le sujet.
    J'aimerais juste comprendre pourquoi d'un ordi à l'autre, cela ne fonctionne pas :/ et bien sur comment résoudre mon soucis

    Si vous avez des pistes, jsuis preneur...
    Ou des questions, n'hésitez pas...
    bye

  2. #2
    Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Juste une précision.

    Si je n'utilise pas de Thread et que j'enregistre dans ma boucle principale, la gestion de la pompe à messages, ca marche parfaitement !

    Bon j'y perds forcément tout l'intérêt que je cherche, mais c'est pour cela que je pense accuser le multithreading !

  3. #3
    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
    Il y a sûrement un bug ailleurs, parce que si c'est la même install d'XP PeekMessage() devrait marcher.
    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.

  4. #4
    Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    oui, je te l'accorde, il doit y avoir un bug ^^

    Mais c'est surprenant, pour avoir tracé les messages qui passent, la création de la fenêtre se déroule sans soucis, elle s'affiche même, le dernier message que je vois passer est WM_MOVE, et après la fenêtre freeze alors que mes deux threads tournent toujours

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bon autant pour moi -_-'

    Il doit bien y avoir un autre problème qq part,
    pour avoir isoler la partie création de fenêtre et création de thread, effectivement ca passe tout seul sans soucis....
    reste à creuser... mais c'est mieux que rien ^^

    bye

  6. #6
    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
    Attention, certains messages sont reçus avant que CreateWindow() retourne. Ou avant que PeekMessage() retourne. Seuls les messages "postés" sont retournés par Get/Peek message, alors que les messages "envoyés" sont dispatchés immédiatement en interne par la fonction.

    Aussi, attention aux boucles modales qui arrivent quand on fait certaines actions sur une fenêtre, comme la faire glisser ou la redimensionner.
    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.

Discussions similaires

  1. PeekMessage & multithreading
    Par d4mi3nvil dans le forum Threads & Processus
    Réponses: 2
    Dernier message: 26/08/2010, 07h52
  2. [WinAPI C++] MultiThreading?
    Par Gruik dans le forum Windows
    Réponses: 2
    Dernier message: 25/03/2004, 00h08
  3. [Win32]App multithread
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 25/09/2003, 09h57
  4. Multithreading sous HP Ux 11
    Par pykoon dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 18/10/2002, 23h36

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