Le premier site francophone dédié au développement Pocket PC


Comment simuler le Doevents de VB ?
 
   

 

Doevents est absent des instructions eVB, pourtant, grâce à lui sous Visual Basic il est possible de créer des interfaces très fluides, où la mise à jour des contrôles visuels ne s'effectue pas par morceaux non contrôlés, où le développeur peut décider qui doit être mis à jour, et quand.

Le Doevents de VB rend la main au système qui en profite pour traiter tous les messages en attente. Ces messages sont de toute nature : rafraichissement de l'écran, mise à jour du pointeur de souris, fermeture ou affichage d'une fenêtre, etc...

Avec eVB, pas de Doevents ! Il en résulte souvent une interface qui se dessine par saccades.

Nous allons donc créer notre Doevents, que nous appelerons WCEDoevents. Pour celà, nous allons utiliser 3 API Windows CE : PeekMessage, DispatchMessage et TranslateMessage qui sont toutes contenues dans la librairie dynamique Coredll.dll .

Declare Function PeekMessage Lib "coredll.dll" Alias "PeekMessageW" (ByVal Msg As String, ByVal hWnd As Long, ByVal wMsgFilterMin As Integer, ByVal wMsgFilterMax As Integer, ByVal wRemoveMsg As Integer) As Boolean
Declare Function TranslateMessage Lib "coredll.dll" (ByVal Msg As String) As Boolean
Declare Function DispatchMessage Lib "coredll.dll" Alias "DispatchMessageW" (ByVal Msg As String) As Boolean

Private Sub WCEDoevents()

Dim wMsg As String
Dim PmRemove As Integer

wMsg = String(18, Chr(0))
PmRemove = 1
If PeekMessage(wMsg, 0, 0, 0, PmRemove) Then
Call TranslateMessage(wMsg)
Call DispatchMessage(wMsg)
End If

End Sub

Il ne faut pas utiliser WCEDoevents à toutes les sauces, il fait perdre un peu de temps, et surtout, il permet à l'utilisateur de votre interface de continuer à agir, comme Doevents avec VB.

Vous pouvez télécharger les sources d'un tout petit programme qui reprend la déclaration des API et celle de WCEDoevents. Il vous permet aussi de tester l'effet de WCEDoevents avec 2 bouttons dont le click déclenche une suite de changements de couleurs, l'un avec l'instruction WCEDoevents entre chaque changement de couleur, et l'autre non. Voyez la différence !

Sources de cet article

Stéphane Sibué

 

 
       
   
 
   
Copyright 2001-2004 - Tous droits réservés
 
   

iPAQ est un produit de COMPAQ.
Visual Tools est un produit de Microsoft Corporation.
Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives.