| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > OnTimer при потере фокуса |
| Автор: BenGan 3.6.2018, 21:49 |
| Всем привет! Столкнулся со странным поведением обработчика OnTimer. Есть форма на которой "лежит" таймер и управляет перерисовкой динамичной графики на этой форме. Теперь форма теряет фокус. Перерисовка графии останавливается. Но каким-то чудом начинается динамическая перерисовка на другой форме, которая словила фокус. В отладчике вижу, что постоянно дергается событие Form->OnPaint. Такое чувство что это делает таймер на первой форме. Как??? Кто знает, как ДОЛЖЕН вести себя таймер при потере/восстановлении фокуса? |
| Автор: Romikgy 3.6.2018, 22:53 |
| таймер вещь тупая, это только старт вашего кода через приблизительно одинаковые промежутки времени. все зависит от вашего кода! самый простой способ отключайте таймер при потере фокуса вашей формы... |
| Автор: BenGan 4.6.2018, 10:51 |
| все зависит от вашего кода! У меня прописан обработчик OnTimer. Вот и весь код! Вопрос касается именно системной организации вызова: какое сообщение и кому (при потере фокуса) посылает система при наступлении события со стороны таймера? PS: Отключать таймер мне не к чему, нужно, чтобы на форме потерявшей фокус, продолжала работать мультипликация. |
| Автор: BenGan 6.6.2018, 08:00 |
| Разобрался. WM_TIMER от фокуса не зависит. Из-за некорректной обработки события OnPaint в форме, которая ловила фокус возникал вечный цикл, непрерывно сыпались WM_PAINNT, не оставляя времени для работы таймера, поэтому складывалось впечатление, что таймер стал работать на другую форму. |
| Автор: Romikgy 6.6.2018, 08:30 |
зависит от хендла для которого был зарегестрирован |