Question

Je travaille sur un projet MFC où je besoin d'une boucle séparée qui fonctionnera en permanence ou une fois toutes les quelques secondes, et chaque fois qu'il peut ou non besoin d'exécuter une boîte de dialogue pour obtenir une entrée de l'utilisateur. Je pensais à l'aide AfxBeginThread, mais de ce que je lis à ce sujet, il n'a vraiment pas de travail avec une boucle continue.

Était-ce utile?

La solution

Ne pas le faire. Vous ne pouvez pas simplement déchirer les boîtes de dialogue de threads de travail dans. Ils ne peuvent être démarrés dans le thread principal, car ils ont besoin de la pompe de message afin de fonctionner.

Si vous voulez tout est un signal de quelque sorte que tous les feux quelques secondes, alors ce que vous voulez est un minuterie. Réglez la minuterie pour la période de programmation que vous désirez, et lorsque votre thread principal a traité le message WM_TIMER désiré, vous pouvez faire apparaître une boîte de dialogue et de faire votre chose.

Si vous voulez que votre thread de travail pour faire un travail, ce qui peut ou ne peut pas consister à demander à l'utilisateur des informations, alors vous aurez envie de regarder pour avoir votre utilisation de fil PostMessage () pour envoyer un message au thread principal, processus ce message, il int thread principal par demander à l'utilisateur de données, puis l'envoi d'un retour de signal pour le thread de travail avec les données d'entrée. Une façon d'accomplir le dernier bit est en appelant QueueUserAPC () du fil conducteur avec la poignée du thread de travail et un pointeur vers une fonction qui ne somethething avec les données nouvellement entrées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top