![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Системный таймер
Sniffer © (2002-04-13 22:25:00)Привет всем! Кто нить скажет, чё ето за штуковина и как её юзать.
В моём разумении системный таймер, ет выполняет те же самые ф-ции как и стандартный дельфийский компонент......исправте если ошибаюсь. Усем сенкс!
ION T (2002-04-14 22:07:00) [21]Шо у тебя за Дельфи?
Anatoly Podgoretsky (2002-04-14 22:04:00) [22]Вообще то надо так, procedure Kiss(Wnd: hWnd; uMsg, idEvent: cardinal; dwTime: LongWord); stdcall;
Но это не принципиально для ошибки, я ее не вижу.
Sniffer (2002-04-14 21:44:00) [23]Как обычно,
procedure Kiss; stdcall;
begin
...........
end;
Anatoly Podgoretsky (2002-04-14 21:39:00) [24]Не ясно как у тебя в данный момент объявлен kiss
Sniffer (2002-04-14 21:28:00) [25]>>Anatoly Podgoretsky
Никто не обязан, просто.........гм да ладно.........извиняюсь, если кого обидел. А где ошибка то?
Sniffer (2002-04-14 21:27:00) [26]>>Anatoly Podgoretsky
Никто не обязан, просто.........гм да лодно.........извиняюсь, если кого обидел. А где ошибка то?
Anatoly Podgoretsky (2002-04-14 21:20:00) [27]Кто то обязан? Будещь требовать, будут вообще молчать.
У тебя ощибка в другои месте
Sniffer (2002-04-14 21:19:00) [28]Прелестно! Ты меня просвятил, а я ведь не знал чё делает таймер OnTimer! Мне всё же интересно, почему такое бьявление :
SetTimer(Application.Handle, 0, 1000, @Kiss)
взывает ошибку : [Error] Unit1.pas(39): Variable required %(
Biorobot (2002-04-14 21:14:00) [29]Таймер что-то делает через определённый промежуток времени, например через кааждые 1 секунду. Выполняет событие онТаймер
Sniffer (2002-04-14 21:07:00) [30]Народ? Чё в облом мозгами пошевилить?
Sniffer (2002-04-14 19:37:00) [31]>>Ion T
Обьявление SetTimer(Application.Handle, 0, 1000, @Kiss) вызывает ошибку :
[Error] Unit1.pas(39): Variable required
ION T (2002-04-14 18:32:00) [32]1.Адрес и надо передавать;
2.Насколько я знаю, коллбэк не может быть методом;
3.И вообще это процедура должна быть
Так шо оно должно быть типа:
procedure Kiss(Wnd: hWnd; uMsg, idEvent: cardinal; dwTime: LongWord); stdcall;
begin
beep;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetTimer(Application.Handle, 0, 1000, @Kiss)
end;
Sniffer (2002-04-14 18:04:00) [33]Не усё равно не пашет, я думаю, что надо указать адрес процедуры,
например Time, но я не знаю как ето сделать. Может кто-нить знает?
Anatoly Podgoretsky (2002-04-14 16:13:00) [34]null это вариант, тебе нужно использовать 0
Sniffer (2002-04-14 16:07:00) [35]Кстати ещё вопрос по теме, в хелпе написяно :
TIMERPROC lpTimerFunc // address of timer procedure
Как тогда можно узнать адрес процедуры TimerProc?
Sniffer (2002-04-14 16:07:00) [36]Кстати ещё вопрос по теме, в хелпе написяно :
TIMERPROC lpTimerFunc // address of timer procedure
Как тогда можно узнать адрес процедуры Timer Proc?
Sniffer (2002-04-14 15:48:00) [37]У мене проблем.........Почему такое не хотит пахать :
function TForm1.Kiss : Pointer;
begin
................
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetTimer(Application.Handle, null, 1, Kiss)
end;
Дельфа ругается говорит :
Invalid variant type conversion
Sniffer (2002-04-14 15:19:00) [38]Усем сенкс, сча попробую
SoftOne (2002-04-14 03:19:00) [39]Ранее принято было под "системным таймером" понимать таймер, который вызывает, периодически, прерывание 8.
"Обходя компонент", следует ловить WM_TIMER.
Или задать "CallBack" функцию.
Все это описано в Хэлпе. См. например, функцию SetTimer.
Oleg_Gashev (2002-04-14 02:11:00) [40]Although the following example also creates a mousetrap, it processes the WM_TIMER message through the application-defined callback function MyTimerProc, rather than through the application"s message queue.
UINT uResult; // SetTimer"s return value
HICON hIcon1; // icon handle
POINT ptOld; // previous cursor location
HINSTANCE hinstance; // handle of current instance
//
// Perform application initialization here.
//
wc.hIcon = LoadIcon(hinstance, MAKEINTRESOURCE(400));
wc.hCursor = LoadCursor(hinstance, MAKEINTRESOURCE(200));
// Record the current cursor position.
GetCursorPos(&ptOld);
// Set the timer for the mousetrap.
uResult = SetTimer(hwnd, // handle of main window
IDT_MOUSETRAP, // timer identifier
10000, // 10-second interval
(TIMERPROC) MyTimerProc); // timer callback
if (uResult == 0)
{
ErrorHandler("No timer is available.");
}
LONG APIENTRY MainWndProc(
HWND hwnd, // handle of main window
UINT message, // type of message
UINT wParam, // additional information
LONG lParam) // additional information
{
HDC hdc; // handle of device context
switch (message)
{
//
// Process other messages.
//
case WM_DESTROY:
// Destroy the timer.
KillTimer(hwnd, IDT_MOUSETRAP);
PostQuitMessage(0);
break;
//
// Process other messages.
//
}
// MyTimerProc is an application-defined callback function that
// processes WM_TIMER messages.
VOID CALLBACK MyTimerProc(
HWND hwnd, // handle of window for timer messages
UINT message, // WM_TIMER message
UINT idTimer, // timer identifier
DWORD dwTime) // current system time
{
RECT rc;
POINT pt;
// If the window is minimized, compare the current
// cursor position with the one from 10 seconds earlier.
// If the cursor position has not changed, move the
// cursor to the icon.
if (IsIconic(hwnd))
{
GetCursorPos(&pt);
if ((pt.x == ptOld.x) && (pt.y == ptOld.y))
{
GetWindowRect(hwnd, &rc);
SetCursorPos(rc.left, rc.top);
}
else
{
ptOld.x = pt.x;
ptOld.y = pt.y;
}
}
}
(C) Borland Help