![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
особенности WndProc
Satrap © (2002-01-06 11:56:00)Уважаемые знатоки, возможно я задаю наивный или некорректный вопрос и все же:
На форме расположен компонент TTimer, если нажать и удерживать левую клавишу в
неклиентской области формы, программа перестает попадать в событие OnTimer.
Насколько я понял, это как то связано с устройством процедуры TTimer.WndProc.
Нельзя ли как нибудь избавиться от этого неприятного эффекта?
iZEN (2002-01-11 20:51:00) [1]Использовать TThread однозначно!
Satrap (2002-01-11 16:05:00) [2]Мне все нравиться, просто я программист неопытный, ничего не знаю, поэтому и спрашиваю
Yaro (2002-01-09 04:15:00) [3]А чем вам не нравится Виндовская АПИшка SetTimer ? Работает хорошо, почти независимо от программы. Читайте хелп и юзайте!
TonnyS (2002-01-08 16:44:00) [4]Ещё вариант таймера (вычитал где-то):
var
uTimerID : cardinal;
procedure FNTimeCallBack(uTimerID, uMessage: UINT;dwUser, dw1, dw2: DWORD); stdcall; //это типа OnTimer
begin
...
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
uTimerID :=timeSetEvent(PrecValue,500,@FNTimeCallBack,100,TIME_PERIODIC); //запуск таймера, PrecValue - интервал, (что значат остальные цифры - не помню)
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
timeKillEvent(uTimerID); //Остановка таймера
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if uTimerID <> 0 then timeKillEvent(uTimerID); //уничтожаем таймер
end;
вроде всё.
Satrap (2002-01-07 09:13:00) [5]Большое спасибо за помощь, поробую.
Tolik2002 (2002-01-06 12:03:00) [6]Наверное можно. Используй для этого или TThread, или (что проще) мультимедийый таймер.
MMRESULT timeSetEvent(
UINT uDelay,
UINT uResolution,
LPTIMECALLBACK lpTimeProc,
DWORD_PTR dwUser,
UINT fuEvent
);
MMRESULT timeKillEvent(
UINT uTimerID
);
короче смотри м MSDN:
timeBeginPeriod
timeEndPeriod
timeGetDevCaps
timeGetSystemTime
timeGetTime
timeKillEvent
TimeProc
timeSetEvent