Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.21;
Скачать: CL | DM;

Вниз

Как во время убить мультимедиа таймер?   Найти похожие ветки 

 
Alex_C ©   (2006-11-29 09:15) [0]

В моей проге для обеспечения точного времени вызова события используется мультимедиа таймер. У пользователя есть возможность изменять время работы события. При измененни времени события я делаю так:

// Убиваем старый траймер
timeKillEvent( mmResult );
// Создаем новый таймер с новым временем срабатывания
mmResult := TimeSetEvent(NewTimeInterval, 0, @TimerCallBack, 0, TIME_PERIODIC);

Однако вот в чем проблема - при этом необходимо, чтобы последнее время срабатывания таймера сохранилось (допустим, время срабатывания таймера 5 сек. Пользователь указал таймеру новое время срабатывания 6 сек. Однако это произошло на 2 сек работе таймера - т.е. не убивать таймер, пока не закончится последнее срабатывание таймера, а затем промежуток уже сделать 6 сек). Как это более правильно сделать?


 
Чапаев ©   (2006-11-29 09:17) [1]

Создай некий флаг, который будет сигнализировать об изменениях. В функции обратного вызова: если флаг установлен, то убить теперешний таймер, создать новый, сбросить флаг.


 
Сергей М. ©   (2006-11-29 09:27) [2]

ПРимерно так:

var
 NewTimeInterval, OldTimeInterval: UINT;
 idTimer: MMRESULT;
...

function TimerCallBack(...)
begin
 if  NewTimeInterval <> OldTimeInterval then begin
   timeKillEvent(mmResult);
   OldTimeInterval := NewTimeInterval;
   if NewTimeInterval <> 0 then
     mmResult := TimeSetEvent(NewTimeInterval, 0, @TimerCallBack, 0, TIME_PERIODIC);
 end;
...
end;

устанавливаем новый период:

NewTimeInterval := ....;

p.s.

Все обращения к статической переменной NewTimeInterval крайне желательно защитить крит.секцией.


 
Alex_C ©   (2006-11-29 09:31) [3]

Ок! Понятно! Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2007.01.21;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.032 c
2-1167993985
DelphiLexx
2007-01-05 13:46
2007.01.21
Delphi выдает ошибку. С чем это связано


15-1167174176
Andy BitOff
2006-12-27 02:02
2007.01.21
Или я туплю, или одно из двух


2-1167906518
igor66613
2007-01-04 13:28
2007.01.21
Кнопка из ДЛЛ


15-1167505067
default
2006-12-30 21:57
2007.01.21
Arash feat. Aleena - Chori Chori


2-1167945250
rolex
2007-01-05 00:14
2007.01.21
Ключи реестра