2010-01-31 7 views
2

On écrit à l'écran avec:Comment voir la sortie de TextOutW (...) après chaque appel?

::TextOutW(pDC->m_hDC, x, y, &Out, 1); 

Il montre que sur l'écran après tous les 15 appels (15 caractères). À des fins de débogage uniquement, j'aimerais voir le nouveau caractère à l'écran après chaque appel. J'ai essayé :: flushall() et quelques autres choses mais pas de changement. TIA

Répondre

1

Les appels de fonction GDI sont accumulés et appelés par lots pour des raisons de performances. Vous pouvez appeler GdiFlush après l'appel TextOut pour exécuter le dessin immédiatement. Vous pouvez également appeler le GdiSetBatchLimit (1) avant de sortir le texte pour désactiver complètement le traitement par lots.

+0

Bonne réponse. Battez-moi par 45 secondes ... :-) –

+0

Merci beaucoup! Ils font tous les deux ce que je veux. BTW, j'ai essayé de définir d'autres valeurs dans GdiSetBatchLimit(); et a trouvé que 15 semble être le maximum. Plus les valeurs sont élevées, plus les valeurs 15 et moins agissent comme prévu. Les docs disent qu'une valeur de 0 définit la valeur par défaut. – Harvey

1

::flushall() est pour iostreams, donc il n'affectera pas du tout la sortie d'écran Windows. Je ne l'ai jamais essayé, mais selon les docs, je crois que GDIFlush() pourrait être ce que vous voulez. Vous devriez également être en mesure d'utiliser GDISetBatchLimit(1); pour forcer chaque appel à s'exécuter immédiatement après avoir été appelé.

+0

Merci beaucoup! Ils font tous les deux ce que je veux. Cela devrait être: GdiSetBatchLimit (1); et GdiFlush(); – Harvey

Questions connexes