[astuce] messagebox qui n'arrete pas le processus courant

Contenu du snippet

La commande MsgBox permet d'afficher un message à l'écran, mais elle arrête tous les processus qui étaient en cours.
Avec l'API MessageBox, on affiche la même chose, mais les processus qui étaient en cours continuent de tourner.

Code à tester avec 2 CommandButtons, un Timer et un Label.

Vraiment con comme source, mais pas aperçue sur le site ( ou alors noyée dans le flot des générateurs de MsgBox ). Si c'est le cas, désolé pour la pollution. Elle peut être supprimée.
Bref, c'est plutôt son utilisation bien particulière qui m'interpelle ici, car je pensais dur comme fer qu'on était obligé de créer sa propre MessageBox quand on ne voulait pas arrêter les processus.

Source / Exemple :


Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As _
Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As _
Long) As Long

Private Sub Command1_Click()
'   L'appel à la MsgBox traditionnelle arrête tous les processus qui
'   étaient en cours. Regardez donc le Timer dans Label1.
    MsgBox "Le Timer s'arrête"
End Sub

Private Sub Command2_Click()
'   L'appel à l'API MessageBox n'arrête pas les processus qui étaient
'   en cours. Regardez Label1 qui continue de défiler ...
    MessageBox Me.hwnd, "Le Timer ne s'arrête pas.", "API MsgBox", vbOKOnly + vbExclamation
End Sub

Private Sub Form_Load()
'   Initialisation du Timer
    Timer1.Interval = 100
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
'   Le label contient l'heure courante et est raffraichi tous les
'   Timer1.Interval [ms].
    Label1.Caption = Time
End Sub

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.