Question

Mon programme a plusieurs threads. J'utilise messagebox pour afficher des informations à l'utilisateur. Y at-il de toute façon (ou une alternative à la boîte de message) que je peux avoir une autre mise à jour du fil / modifier le texte d'affichage de boîte de message alors que la boîte de message est toujours à l'écran et visible par l'utilisateur?

Était-ce utile?

La solution

En utilisant des crochets spécifiques à fil via GetCurrentThreadId () et SetWindowsHookEx (), vous pouvez brancher les messages MessageBox () reçoit en interne, ainsi que l'accès de gain principal poignée de fenêtre de la boîte de dialogue, qui gagne alors vous aurez accès à tous les contrôles enfants de la boîte de dialogue. Vous pouvez ensuite personnaliser la boîte de dialogue et son contrôle au besoin. Cette technique est couramment utilisée pour la mise en œuvre des boîtes de dialogue à fermeture automatique (avant MessageBoxTimeout () a été introduit), personnaliser le texte des boutons, etc.

Autres conseils

Si vous utilisez une boîte de message standard Win32 Je ne crois pas qu'il y ait aucune façon de changer le texte une fois que la boîte est déjà affiché (vous entrez dans une pompe de message modal).

Je vous suggère de créer votre propre fenêtre qui écoute les messages / mises à jour de vos autres threads. De cette façon, vous êtes en contrôle.

Je ne crois pas qu'il y ait un moyen direct pour ce faire, vous pouvez probablement essayer d'obtenir la poignée de fenêtre, mais cela est trop compliqué. Votre meilleur pari est de créer votre propre boîte de dialogue afin que vous vous avez le contrôle total dessus.

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