![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что за проблема с мультимедиа-таймером? Пол дня мучаюсь.
bineon © (2003-07-24 22:26:00)
Пишу по книге, все как надо, а надо, вроде бы, так:
functiontimeSetEvent(uDelay, uResolution: Uint; lpTimeProc: Pointer;
dwUser: Dword; fuEvent: Uint): Uint; stdcall; external "winmm";
functiontimeKillEvent(uID: Uint): Uint; stdcall; external "winmm";
procedureTimerR(uID,uMsg: Uint; dwUse,dw1,dw2: Dword);
begin
timeKillEvent(timerID);
end;
procedureTMainForm.FormCreate(Sender: TObject);
begin
timerID:=timeSetEvent(500,10,@TimerR,100,1)
end;
После вызова в последней процедуре таймер начинает работать, а через 500ms глохнет, не доходя до "килла", выдает стек проца и прочие отладочные гадости. Матерится, мол, проект остановлен с сообщением priveleged instruction at 0x76b3ffa0.
В ФАКе и форуме ничего нет, а искать ручками везде, где попало, не могу - мани треба. Ответ желательно на bineon@bk.ru. Заранее спасибо.
i-C3H7OH (2003-07-24 23:07:00) [1]
вопервых не забыл про STDCALL?
а во вторых зачем все так через ж? т.е. убивать таймер в procedure TimerR? все-таки
procedure TimerR выполняется немого в другом потоке.....
если нужно чтоб он 1 раз сработал - используй timeSetEvent(500,10,@TimerR,100, TIME_ONESHOT)