Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Таймер Добавлено: 13.01.10 20:22  

Автор вопроса:  Ins

Ответить

  Ответы Всего ответов: 24  

Номер ответа: 16
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #16
Добавлено: 14.01.10 14:01
nikolas-rus пишет:
ну так если знаешь напиши ,как ею пользоваться(для таймера),а то может Ins не знает!!

По моему он уже занят другим, и тем неменее стандартный вариант.
Функция SetTimer
Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
--------------------------------------------------------------------------------
SetTimer создает таймер с заданным значением интервала. Созданный таймер будет генерировать интервалы до тех пор, пока не будет вызвана функция KillTimer, удаляющая его. Использование этой функции необходимо там, где возможности встроенного vb-элемента управления Timer недостаточны. Элемент управления Timer может использовать интервал чуть более одной минуты. А функция способна задать интервал в 24.86 дня!
Минимальная платформа
Windows XP

Возвращаемое значение
В успешном случае функция возвращает значение идентификатора созданного таймера. В случае ошибки возвращается 0 (используйте GetLastError для получения кода ошибки)

Параметры
hWnd
Дескриптор окна для создаваемого таймера. Для создания таймера, не связанного с никаким окном используйте 0
nIDEvent
Ненулевое значение для задания идентификатора таймера. Если hWnd равен 0, то параметр игнорируется
uElapse
Интервал таймера в миллисекундах. Не превышайте предел 2 147 483 647 миллисекунд. Учтите, что физический таймер тикает приблизительно 18,21 раза в секунду (точное значение составляет 1000/54,925). Поэтому, даже если вы укажете, что таймер должен тикать каждую миллисекунду, сообщения будут приходить с интервалом не менее 55 миллисекунд
lpTimerFunc
Указатель на функцию обратного вызова TimerProc. Если равен 0, то посылается сообщение WM_TIMER заданному окну


  1. ' Пример создания таймера
  2. ' Вставьте код в стандартный модуль
  3. Declare Function SetTimer Lib "user32" _
  4.   (ByVal hwnd As Long, _
  5.   ByVal nIDEvent As Long, _
  6.   ByVal uElapse As Long, _
  7.   ByVal lpTimerFunc As Long) As Long
  8.  
  9. Declare Function KillTimer Lib "user32" _
  10.             (ByVal hwnd As Long, _
  11.             ByVal nIDEvent As Long) As Long
  12.  
  13. Global iCounter As Integer
  14.  
  15. Sub TimerProc(ByVal hwnd As Long, _
  16.       ByVal uMsg As Long, _
  17.       ByVal idEvent As Long, _
  18.       ByVal dwTime As Long)
  19.  
  20.   iCounter = iCounter + 1
  21.   Form1.Text1.Text = CStr(iCounter)
  22. End Sub
  23.  
  24.  
  25. ' Добавьте на форму кнопку Command1
  26. ' и текстовое поле Text1
  27.  
  28. Dim lngTimerID As Long
  29. Dim BlnTimer As Boolean
  30.  
  31. Private Sub Form_Load()
  32.  BlnTimer = False
  33.  Command1.Caption = "Включить таймер"
  34. End Sub
  35.  
  36. Private Sub Command1_Click()
  37. ' Включаем и выключаем таймер
  38.  
  39.   If BlnTimer = False Then
  40.     lngTimerID = SetTimer(0, 0, 200, AddressOf TimerProc)
  41.        If lngTimerID = 0 Then
  42.          MsgBox "Таймер не создан. Конец программы"
  43.          Exit Sub
  44.        End If
  45.      BlnTimer = True
  46.      Command1.Caption = "Выключить таймер"
  47.    Else
  48.       lngTimerID = KillTimer(0, lngTimerID)
  49.          If lngTimerID = 0 Then
  50.            MsgBox "Не могу убить таймер"
  51.          End If
  52.        BlnTimer = False
  53.        Command1.Caption = "Включить таймер"
  54.    End If
  55.  
  56. End Sub

Ответить

Номер ответа: 17
Автор ответа:
 ηikolaŠ~rus



ICQ: 604058327 

Вопросов: 50
Ответов: 287
 Профиль | | #17 Добавлено: 14.01.10 15:05
Я думаю он уже сам забыл что задавал вопрос апр таймер.

Ответить

Номер ответа: 18
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #18
Добавлено: 14.01.10 16:03
Winand пишет:
Боцман, почему 50мс? вообще при 1мс таймер срабатывает чаще, значит он может считать время меньше 50мс

Это ты так думаеш, на самом деле все не так, а как описано выше, для получения точности в 1 милисекунду пользуют другие апи.

Ответить

Номер ответа: 19
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #19
Добавлено: 14.01.10 16:06
Боцман, я сужу объективно - таймер на 1мс работает быстрее таймера на 50. Это же факт.

Ответить

Номер ответа: 20
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #20
Добавлено: 14.01.10 16:20
Winand пишет:
Боцман, я сужу объективно - таймер на 1мс работает быстрее таймера на 50. Это же факт.

Там в некоторых моментах точность доходит до 15 насколько я помню. Как=то я создавал тему о таймере и наколке
в точности, это мне нужно было для создания видеопотока. Решил только через специальные апи.
Посмотри вот это
QueryPerformanceCounter позволяет получить значение системного высокоточного таймера. Системный высокоточный таймер - это счетчик, позволяющий измерять очень маленькие интервалы времени с большой точностью. Точность времени очень сильно зависит от конкретного оборудования. Узнать, насколько точны интервалы времени можно с помощью QueryPerformanceFrequency, возвращающей число тактов в секунду. Зная эту частоту, вы можете использовать высокоточный таймер

Ответить

Номер ответа: 21
Автор ответа:
 ηikolaŠ~rus



ICQ: 604058327 

Вопросов: 50
Ответов: 287
 Профиль | | #21 Добавлено: 14.01.10 17:05
Боцман может я и не прав(спорить не буду)но по твоему - ты говоришь что при 50мс таймер будет обновляться быстрей ,чем при 1 ???

Ответить

Номер ответа: 22
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #22
Добавлено: 14.01.10 17:13
nikolas-rus пишет:
Боцман может я и не прав(спорить не буду)но по твоему - ты говоришь что при 50мс таймер будет обновляться быстрей ,чем при 1 ???

Я это не утверждал, просто все равно 1 милисекунда равна примерно 15 или 18 и обновление будет только с этим тактом.
Ишака можно назвать лошадью(1милисекунда) но он скачек от этого не выиграет.

Ответить

Номер ответа: 23
Автор ответа:
 Ins



Вопросов: 6
Ответов: 24
 Профиль | | #23 Добавлено: 14.01.10 19:23
Спасибо большое вам форумчанЕ))
очень помогли мне)

Ответить

Номер ответа: 24
Автор ответа:
 ηikolaŠ~rus



ICQ: 604058327 

Вопросов: 50
Ответов: 287
 Профиль | | #24 Добавлено: 14.01.10 19:59
Пожалуста

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам