PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 19 nov. 2005 à 01:13
salut,
mis à part que si tu aimes bien savoir, alors il aurait fallut utiliser le moteur de recherches plutôt que le lien "poster".....
DoEvents demande à VB (pour le coup...) de faire(do) les évènements(events) qui ne sont pas les siens ; donc redonne la main au système pour qui fasse son job et donc que l'explorer ne crash pas.
utilisé dans les grosses boucles essentiellement.
@+
PCPT [AFCK]
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 19 nov. 2005 à 09:58
Actions accomplies par DoEvents (grosso modo):
If PeekMessage(...) Then
TranslateMessage(...)
DispatchMessage(...)
TRAITER REPAINT ET AUTRE
End If
EXPLICATION rapide:
Le système envoie des messages sur la pile du thread primaire du prog pour tout event, que soit matériel (comme clavier ou souris) ou logiciel comme besoin de repaint par exemple. Ces messages sont sous la forme de 7 params 32 bits (sur win32) qui forment une structure MSG.
- PeekMessage vériefie la présence d'un message et remplit une structure MSG.
- TranslateMessage réinterprètera, si c'est le cas, les codes claviers VK_xxx en codes caractères et leur refera faire un tour en WM_CHAR.
- DispatchMessage enverra les messages vers les windProc de chaque fenêtre pour traitement.
Les events récupérés par DoEvents sont donc bien les 'siens', il est tout à fait impossible sur un système moderne qu'un prog en mode user intervienne sur l'espace mémoire d'un autre prog.
A noter également que c'est le prog qui ne traite pas ses messages qui risque le plantage et non explorer ou quelque autre. Comme il est coutume de dire en info comme ailleurs "à chacun sa m**de".