2010-02-26 6 views
4

Quel contrôle MFC dois-je utiliser et comment dois-je l'utiliser pour afficher du texte en constante évolution (comme du texte de progression) dans une boîte de dialogue?MFC Dynamic Text Control?

Par exemple, dois-je utiliser le contrôle de texte statique? Mais pouvez-vous le changer par programmation?

Répondre

3

Oui, vous pouvez modifier le contenu d'un contrôle statique par programmation. Changez l'ID en quelque chose autre queIDC_STATIC, puis vous pouvez lui affecter une variable membre. Vous pouvez définir le texte avec your_var.SetWindowText().

Éditer: combien de changements faites-vous, et à quelle vitesse? J'ai fait un programme de test rapide avec un minuteur (réglé sur une durée de 0) qui formate et écrit une nouvelle chaîne sur le contrôle quand le temps se déclenche, donc il se met à jour constamment. Voici à quoi il ressemble après avoir couru pendant un certain temps:

Test program

Et voici ce que le Gestionnaire des tâches montre:

Task Manager

Le pic a le droit est (la plupart du temps au moins) de prendre la capture d'écran du programme de test en le sauvegardant, et ainsi de suite. Dès que j'ai arrêté de faire des choses comme ça, l'utilisation du CPU est retournée au niveau de bruit (avec le blip occasionnel). J'ai quitté le programme en cours d'exécution - une demi-heure plus tard, ça marche toujours, sans utilisation notable du processeur (en rapide selon Task Manager, il n'a pas encore utilisé une seconde de temps CPU).

+0

Je l'ai fait, et pour une raison quelconque, il semble utiliser le processeur après de nombreuses modifications fréquentes – Vanwaril

+0

Pouvez-vous modifier la police et la couleur d'un contrôle de texte statique par programme? – Chetan

+1

@Chetan: Oui. Pour changer la police, appelez son membre 'SetFont()'. Pour modifier la couleur d'arrière-plan, renvoyez un pinceau en réponse à 'WM_CTLCOLOR' ou' WM_CTLCOLORSTATIC'. Pour définir la couleur du texte, appelez 'SetTextColor()' pour le contrôleur de domaine que vous recevez lors de la gestion de 'WM_CTLCOLOR'. –