Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Системный таймер


Страницы:   1 2 3

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


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо