Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
231
Assunto : Visual Basic
Titulo: Supere as limitações do componente Timer

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



O componente timer do VB é limitado a 65000 milisegundos, o que é um pouco mais que um minuto.

Para superarmos essa limitação precisaremos abrir mão do componente Timer e fazer uso de duas API's : SetTimer e KillTimer.

As API's não possuem a limitação de 65000 pois utilizam variáveis LONG para a definição do Timer.

Essas API's em questão são um bom exemplo do uso de uma função de CallBack : Passamos o endereço de uma sub em nossa aplicação para a API e ela chama nossa sub a cada intervalo de tempo determinado.

A declaração das API's pode ficar em um módulo ou em um formulário, mas a função de CallBack, a função que será chamada pela API, precisa ficar em um módulo. Veja a declaração das API's :


Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Os parâmetros da função SetTimer são :

hwnd : O handle da janela owner do timer
nIDEvent : O ID do timer. Deve ser único para o hwnd, mas diferentes hwnd podem criar timers com o mesmo ID, sem problema
uElapse : O tempo em milisegundos
lpTimerFunc : Um ponteiro para a função a ser chamada

Vamos considerar um exemplo de um form com 2 botões, um para iniciar o timer outro para desativa-lo. Veja como fica o código :


Private Sub Command2_Click()
KillTimer Me.hwnd, 0
End Sub

Private Sub Form_Load()

SetTimer Me.hwnd, 0, 120000, AddressOf TimerProc
End Sub


A função AddressOf é utilizada para obter o ponteiro para a função que será chamada pelo timer, a sub TimerProc em nosso exemplo. Vejamos então como fica a sub TimerProc :


Public Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
MsgBox "teste"
End Sub

Ela recebe da API os mesmos parâmetros do timer, para poder identifica-lo. Na sub em questão basta realizarmos a tarefa que desejamos ou chamar outra sub que a realize.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br