Вопрос № 63297: Доброго времени суток, уважаемые эксперты.
Написал программу, которая должна выполнять функцию цифрового метронома (прибор, способный производить произвольное количество тактовых долей времени на слух; служит как вспомогательный прибор для устано...
Вопрос № 63.297
Доброго времени суток, уважаемые эксперты.
Написал программу, которая должна выполнять функцию цифрового метронома (прибор, способный производить произвольное количество тактовых долей времени на слух; служит как вспомогательный прибор для установления точного ритма в музыкальном произведении.) Алгоритм простой, но и тут умудрился наступить на грабли. При изменении ритма ползунком трекбар-контрола программа завершает свою работу. Полагаю проблема либо в инициализации таймера, либо в неправильном определении TimerValue в процедуре TimerValueInit. Пожалуйста,
подскажите, в чем ошибка и что еще на ваш взгляд реализовано неграмотно. Спасибо. =)
Отвечает: John Paramol
Здравствуйте, boot_sector!
Вот ошибки, которые мне удалось найти:
- Неправильный вызов SetTimer. Второй параметр = IDT_TIMER, а последний параметр должен быть NULL, т.к. вы обрабатываете WM_TIMER внутри DialogProc.
- При каждом изменении значения position вам надо убивать таймер вызовом KillTimer и создавать его заново с новым значением TimerValue. В вашем случае лучше делать это внутри TimerValueInit
- Вы не должны вызывать DefWindowProc в DialogProc, вместо этого возвращайте в eax TRUE по обработанным сообщениям, и FALSE по всем остальным.
- Для buffer понадобится как минимум 4 байта.
Удачи!
Ответ отправил: John Paramol (статус: 3-ий класс)
Ответ отправлен: 19.11.2006, 23:38 Оценка за ответ: 5 Комментарий оценки: спасибо. =)