Salut à tous!
Ce petit bout de code à mettre dans un module sert à remplacer l'ancien 'DoEvents' par cette petite amélioration beaucoup plus rapide: 'DoEv'.
Source / Exemple :
'Api's
Public Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As MSG, ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Public Declare Function TranslateMessage Lib "user32" (lpMsg As MSG) As Long
Public Declare Function DispatchMessage Lib "user32" Alias "DispatchMessageA" (lpMsg As MSG) As Long
'Types
Public Type POINTAPI
x As Long
y As Long
End Type
Public Type MSG
hwnd As Long
message As Long
wParam As Long
lParam As Long
time As Long
pt As POINTAPI
End Type
'Constantes
Public Const PM_REMOVE = &H1
Public Const PM_NOYIELD = &H2
Public Const PM_NOREMOVE = &H0
Dim msg_ As MSG 'Declaration de la variable msg_
'Fonction
Sub DoEv()
Do While PeekMessage(msg_, 0, 0, 0, PM_REMOVE) 'Vide la pile
TranslateMessage msg_
DispatchMessage msg_
Loop
End Sub
' Remarque : Si vous Mettez PM_NOREMOVE Votre systeme reste bloqué pour je ne sais quelle raison. Apparament il ne doit pas vider la pile d'attente
Conclusion :
Voilà j'ai tout dit au début :-)
@++ Flo
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.