| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Длинный цикл в обход очереди сообщений |
| Автор: Aleks26 25.4.2012, 14:08 | ||
У меня элементарный цикл:
Он выполняется пока не закончится цикл и в Label1 выдает затем 500000. Однако в учебнике говорится о том, что возможно обойти очередь сообщений с помощью команды PerForm() и обработки сообщения WM_PAINT о перерисовке окна. Подскажите, как это сделать. Никак не соображу. |
| Автор: MetalFan 25.4.2012, 14:24 |
| Не понял, при чем тут цикл и вызов Perform? Хочешь, чтобы кэпшн у лабела перерисовывался постоянно? Вставь Application.ProcessMessages в цикл. |
| Автор: northener 25.4.2012, 16:13 |
| Можно вызвать метод Refresh. |
| Автор: RelictOs 25.4.2012, 17:38 | ||
к примеру так.. |
| Автор: Aleks26 25.4.2012, 18:01 | ||
С применением ProcessMessages у них следующий пример. А около приведенного примера - сноска, в которой сказано: "На самом деле значение свойства Caption будет изменяться, так как сообщение об изменении подписи посылается в обход очереди сообщений Windows с помощью команды Perform. Однако для отображения изменений подписи форма должна обработать сообщение WM_PAINT о перерисовке окна (этому сообщению соответствует событие OnPaint формы), а это может произойти только после завершения обработчика нажатия на кнопку." Хотелось просто подробнее понять, что они имеют здесь в виду. |
| Автор: Rennigth 25.4.2012, 21:14 |
| Aleks26, Имеется ввиду что WM_PAINT используя Perform посылается сразу в WndProc, а не через Send(Post)Message. |
| Автор: Aleks26 26.4.2012, 08:27 | ||
Большое спасибо. |