Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Помогите с функцией OnIdle |
Автор: Kylinar 1.2.2008, 15:57 | ||
Народ помогите, бьюсь уже 2-й день с какой-то чепухой, дело в том, что пишу програмку на контроллер WinCon в eVC++ 4 SADU_SACR SDK, до специфичных ему функций дело еще не дошло и поэтому тестирую в на стандартном эмуляторе. Дело в том, что решил сделать таймер внизу экрана с помощью функции OnIdle, все работает пока не нажмешь на какую либо кнопку меню. Как только нажимаю все виснет, причем не всегда. Отладчик тормозной очень не смог с его помощью ничего найти... Вот мои функции:
Заранее благодарен. |
Автор: JackYF 1.2.2008, 17:12 |
Kylinar, пользуйся кнопкой "Код" и отступами в коде. А также константами. К примеру, что такое "40", которое встречается в куче мест кода, абсолютно не понятно. |
Автор: Earnest 1.2.2008, 18:40 |
А почему таймер нужно делать на Idle? Не очень хорошая идея: Idle приходит только после сообщений, т.е. если никто ничего - твой таймер будет стоять... Почему бы таймер не повесить на WM_TIMER? Кроме того, рисовать где ни попадя - тоже плохая идея. Рисовать нужно исключительно на WM_PAINT, а в остальных местах - просто сообщать, что хочешь перерисоваться, т.е. делать Invalidate. Если ты вешаешь все на Idle из тех соображений, чтобы не отнимать ресурсы у более важных функций, так можешь не заморачиваться - у таймера и WM_PAINT и так самый низкий приоритет. |
Автор: Kylinar 2.2.2008, 13:40 | ||
Теперь я так и сделал - все нормаьно работает... Обидно только, что не нашел причину подвисания... С таймером тоже проблемки были: функцию SetTimer при отладке нормально проходил, а при запуске в эмуляторе - код ошибки деления на ноль??? Однако при использовании ::SetTimer(HWND,....) все работает как часики. ![]() |