Je souhaite lancer un thread séparé pour gérer les messages de la fenêtre (via une boucle GetMessage bloquante), mais créer les fenêtres dans le thread initial, par la suite.Comment puis-je gérer les messages de fenêtre à partir d'un thread séparé?
Dans le thread séparé, dès qu'il lance, je fais appel PeekMessage
avec PM_NOREMOVE pour assurer une file d'attente de messages existe (est-ce nécessaire?), Suivi ..
AttachThreadInput(initial thread id,GetCurrentThreadId(),true)
..before enfin entrer la boucle de message
Je n'utilise pas encore de mutex ou de cs pour m'assurer que cela se produit dans le temps, mais j'utilise simplement une instruction Sleep
dans mon thread initial pour des raisons de simplicité. Quoiqu'il en soit, les messages de fenêtre ne semblent pas être interceptés par le thread séparé.
Je ne suis pas certain de savoir si je le fais correctement et j'apprécierais tout conseil possible. Les deux fils sont dans le même processus
Merci à tous
C'est presque toujours une idée terrible. Pour commencer, vous voulez probablement gérer les messages * qui ne sont pas réellement publiés * dans la file d'attente d'entrée du thread de l'interface utilisateur ... A défaut, vous voudrez au moins * envoyer * des messages aux fenêtres appartenant au thread de l'interface utilisateur. ne fonctionnera pas non plus. Vraiment, vous devriez traiter les messages sur le thread de l'interface utilisateur et utiliser le thread séparé pour les opérations qui prennent du temps, sans essayer de partager la file d'attente d'entrée entre eux. Voir: http://stackoverflow.com/questions/783073/processing-messages-is-too-slow-resulting-in-a-jerky-unresponsive-ui-how-can – Shog9
Pour toutes fins utiles, je souhaite utiliser le fil séparé comme le fil d'interface utilisateur. Je souhaite juste avoir la possibilité d'initier la création de la fenêtre à partir du – ProPuke
@ProPuke primaire: et vous ne pouvez pas faire cela. Windows doit être détenu et manipulé par un * et un seul thread *: l'ensemble du système est conçu avec cette hypothèse. – Shog9