gfilatov пишет:
цитата: |
Также можно попробовать поместить эту команду в процедуру при обработке события PAINT: Erase Window Form_1 Draw Text In Window Form_1 ... |
|
Попробовал - еще хуже получилось - вообще не выходит из режима начальной прорисовки окна. "Все пишет да стирает, пишет да стирает"
И, думаю, вот почему.
в файле exdiff.txt есть такая фраза
>DRAW TEXT IN WINDOW <form> - label which updated ON PAINT event
Толком не пойму что это значит, но похоже, что эти команды система миниГУИ автоматом прописывает в OnPaint. В том числе и DRAW LINE.
Но косячит при восстановлении окна только DRAW TEXT.
И чем больше текста - тем раньше и круче.
Т.е. идея хорошая, но реализация сильно ограничила способы использования.
Посмотрел все примеры, где есть эта команда.
Действительно.
Полноэкранные программы, особенно те(!), которые не позволяют переключаться на другие программы, этим косяком не страдают.
Например- ваша FillBlue.
И хотя там не много текста - все два коротких блока - но ошибка в написании функции TextPaint(), которая вызывается при OnPaint, ускоряет процесс наступления косяка.
Ошибка в отсутствии стирания ERASE [ IN ] WINDOW , что при каждом событии OnPaint добавляет в "память окна" по два блока текста которые визуально накладываются друг на друга и незаметны.
С другой стороны добавка
Erase Window Form_1
перед командами DRAW TEXT
только ухудшила дело - программа не выходит из режима начальной прорисовки экрана.
Так что ошибка была правильной!
Всетаки надо бы посмотреть реализацию этой штуки подробно.