2010-01-31 7 views
2

При записи на дисплее с:Как увидеть вывод TextOutW (...) после каждого вызова?

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

Он показывает на экране только после каждых 15 вызовов (15 символов). Для целей отладки, я хотел бы видеть новый символ на дисплее после каждого вызова. Я пробовал :: flushall() и несколько других вещей, но никаких изменений. TIA

ответ

1

Вызов функций GDI накапливается и вызывается партиями по соображениям производительности. После вызова TextOut вы можете позвонить GdiFlush, чтобы выполнить розыгрыш сразу. В качестве альтернативы вызовите GdiSetBatchLimit (1), прежде чем выводить текст, чтобы полностью отключить дозирование.

+0

Хороший ответ. Ударьте меня на 45 секунд ... :-) –

+0

Спасибо вам большое! Они оба делают то, что я хочу. BTW, я попытался установить другие значения в GdiSetBatchLimit(); и обнаружил, что 15, кажется, макс. Более высокие значения партии только 15 и более низкие значения действуют так, как ожидалось. Документы говорят, что значение 0 устанавливает значение по умолчанию. – Harvey

1

::flushall() предназначен для iostreams, поэтому он вообще не будет влиять на вывод экрана Windows. Я никогда не пробовал, но на основании документов я считаю, что GDIFlush() может быть тем, что вы хотите. Вы также должны использовать GDISetBatchLimit(1);, чтобы заставить каждый вызов запускаться сразу после его вызова.

+0

Спасибо вам большое! Они оба делают то, что я хочу. Это должно быть: GdiSetBatchLimit (1); и GdiFlush(); – Harvey

Смежные вопросы