Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Создать мультимедийный таймер

Delphi , Компоненты и Классы , TTimer

Создать мультимедийный таймер

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  The timeSetEvent function starts a specified timer event. 
  The multimedia timer runs in its own thread. After the event is activated, 
  it calls the specified callback function or sets or pulses the spe 
  cified event object. 

  MMRESULT timeSetEvent( 
  UINT           uDelay, 
  UINT           uResolution, 
  LPTIMECALLBACK lpTimeProc, 
  DWORD_PTR      dwUser, 
  UINT           fuEvent 
  ); 

  uDelay: 
   Event delay, in milliseconds 

  uResolution: 
   Resolution of the timer event, in milliseconds. 
   A resolution of 0 indicates periodic events should occur with the 
   greatest possible accuracy. 
   You should use the use the maximum value appropriate to reduce system overhead. 

  fuEvent: 
   TIME_ONESHOT Event occurs once, after uDelay milliseconds. 
   TIME_PERIODIC Event occurs every uDelay milliseconds. 
}


 uses
   MMSystem;

 var
   mmResult: Integer;


 // callback function 
procedure TimeCallBack(TimerID, Msg: Uint; dwUser, dw1, dw2: DWORD); pascal;
 begin
   // Do something here. This procedure will be executed each 10 ms 
  Form1.Label1.Caption := Form1.Label1.Caption + '%';
 end;

 // Set a new timer with a delay of 10 ms 
procedure TForm1.Button1Click(Sender: TObject);
 begin
   mmResult := TimeSetEvent(10, 0, @TimeCallBack, 0, TIME_PERIODIC);
 end;


 // Cancel the timer event. 
procedure TForm1.FormDestroy(Sender: TObject);
 begin
   TimeKillEvent(mmResult);
 end;

Приведенная кодовая база написана на языке Delphi и использует модуль MMSystem для создания таймера мультимедиа. Таймер работает в своем собственном потоке, что позволяет ему вызывать функцию обратного вызова по указанным интервалам.

Функции:

  1. TimeSetEvent: Функция запускает заданный событийный таймер. Она принимает пять параметров:
    • uDelay: Задержка события в миллисекундах.
    • uResolution: Разрешение таймера события в миллисекундах. Значение 0 указывает на то, что периодические события должны происходить с максимальной возможной точностью.
    • lpTimeProc: Указатель на функцию обратного вызова, которая будет вызвана при наступлении события.
    • dwUser: DWORD-указатель на пользовательские данные.
    • fuEvent: Определяет тип таймера события: TIME_ONESHOT (производится один раз) или TIME_PERIODIC (производится периодически).
  2. TimeKillEvent: Функция отменяет ранее установленное событийное время.

Функция Обратного Вызова:

Функция обратного вызова, TimeCallBack, выполняется каждые 10 миллисекунд при наступлении таймера события. В этом примере она просто обновляет надпись на лейбле формы, добавляя символ процента (%).

Основной код:

В основном коде есть два процедура: 1. Button1Click: Процедура устанавливает новый таймер с задержкой 10 миллисекунд и периодическими событиями с помощью функции TimeSetEvent. 2. FormDestroy: Процедура отменяет событийное время при уничтожении формы с помощью функции TimeKillEvent.

Замечания:

  • Модуль MMSystem должен быть включен в верхней части файла кода для использования этих функций.
  • Ключевое слово pascal в объявлении функции обратного вызова указывает, что она должна вызываться с использованием псевдонимирования Pascal.
  • Символ @ перед именем функции обратного вызова используется для получения ее адреса, который затем передается в функцию TimeSetEvent.
  • Переменная mmResult хранит результат функции TimeSetEvent и используется для отмены таймера события в процедуре уничтожения формы. Этот код демонстрирует, как создать таймер мультимедиа с периодическим функцией обратного вызова с помощью Delphi.

Создание мультимедийного таймера в Delphi, который запускает функцию обратного вызова каждые 10 миллисекунд и может быть остановлен с помощью функции TimeKillEvent.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TTimer ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:06:57/0.0038309097290039/0