Un doevents plus rapide

Contenu du snippet

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

A voir également

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.