cs_marco62118
Messages postés176Date d'inscriptionmercredi 7 avril 2004StatutMembreDernière intervention 1 avril 2013
-
10 févr. 2009 à 23:45
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
12 févr. 2009 à 22:51
bonsoir
j'ai utilisé l'API settimer, j'aimerai comprendre différente définition de cette fonction dont les traduction sonta pparement aproximative:
Public Declare Function SetTimer Lib "User32" (ByVal hwnd As Long, _
ByVal nIDEvent As Long, _
ByVal uElapse As Long, _
ByVal lpTimerFunc As Long _
) As Long
hwnd: comment peut il être nul?
niDEvent : idem comment peut on le déclarer égal à 0 ??
lpTimerFunc: représente l'adresse de fonction de rappel qui sera appelée à la fin de la temposrisation c'est bien ça? si oui pourquoi dans la fonction de rappel : Public Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) on soit obligé retransmettre cette adresse lpTimerFunc??
je sais pas où tu a été regardé tes infos, mais MSDN reste la référence.
concernant la TimerProc, tu te méprend sur les arguments:
VOID CALLBACK TimerProc(
HWND hwnd,
UINT uMsg,
UINT_PTR idEvent,
DWORD dwTime
);
on ne retransmet donc pas l'adresse de CallBack.
le timer peut fonctionner avec deux moyens de communication.
- soit on donne un hWnd valide et cette fenetre recevra un message WM_TIMER pour indiquer que le délai de tempo est atteint
- soit on lui donne un hWnd vide, mais on renseigne la fonction de rappel.
cs_marco62118
Messages postés176Date d'inscriptionmercredi 7 avril 2004StatutMembreDernière intervention 1 avril 20131 12 févr. 2009 à 20:14
bonjour
j'ai bien consulté les liens donnés, très bien, j'ai essayé de les traduire, je ne pense pas avoir tout bien compris
j'en ai fait la traduction suivante:
'La fonction SetTimer permet de créer une minuterie qui exécute une fonction au bout de la valeur de délai spécifié.
'Vous pouvez utiliser ces fonctions si vous souhaitez exécuter des événements à des intervalles supérieures _
à ce que permet le contrôle Timer de Visual Basic. _
ces fonctions API autorisent de définir un intervalle de 24.86jours .
Public Declare Function SetTimer Lib "User32" (ByVal hwnd As Long, _
ByVal nIDEvent As Long, _
ByVal uElapse As Long, _
ByVal lpTimerFunc As Long _
) As Long
'hWnd: identifie la fenêtre à associer au timer. Cette fenêtre est détenue par le thread d'appel. _
Si hwnd est NULL, aucune fenêtre n'est associé à l'horloge et le paramètre suivant nIDEvent est _
ignoré et ce timer sera remplacé. La valeur de retour de SetTimer donnera l'ID du timer recréé.
'nIDEvent: Spécifie l 'identifiant d'un timer différent de zéro. _
Si le paramètre hWnd est NULL, ce paramètre est ignoré et un nouveau timer est généré. _
Si le paramètre HWnd n'est pas NULL et la fenêtre spécifiée par hWnd possède déjà un timer _
avec une valeur nIDEvent, alors le timer existant est remplacé par un nouveau timer. _
Lorsque SetTimer remplace un timer, la minuterie est remise à zéro. _
Par conséquent, un message sera envoyé après que le délais soit écoulé. _
Si l'appel ne vise pas à remplacer un timer existant, nIDEvent doit être de 0 si le hWnd est NULL.
'uElapse: spécifie la valeur de délai, en millisecondes. _
Vous pouvez utiliser un type de données Long avec une valeur de 2,147,483,647 millisecondes. _
Dépassement de valeurs supérieures à ce résultat limite dans une erreur d'exécution de « 6 ». _
Remarque : Visual Basic ajoute un signe dièse (#) à la fin de la valeur de temps si la valeur dépasse cette limite.
'lpTimerFunc: pointe vers la fonction de "Rappel" lorsque le délai est écoulé. _
Pour plus d'informations sur la fonction, voir TimerProc. _
Si lpTimerFunc est NULL, le système envois un WM_TIMER message à la file d'attente d'application. _
'Utilisez l'opérateur AddressOf pour renvoyer un pointeur à la fonction. _
La fonction de rappel reçoit le RefFen (nWnd), le NIDEvent, les UElapse et paramètres lpTimerFunc _
à partir de la fonction AddressOf.
'Si la fonction SetTimer réussit,(l'horloge a été installé), _
la fonction SetTimer renvoie la valeur ID du minuteur pour être utilisée dans un appel à KillTimer.
'Si la fonction ne parvient pas à créer un timer, la valeur de retour est égal à zéro. _
Pour obtenir des informations d'erreur étendues, appelez GetLastError.