|
fr.comp.os.ms-windows.programmation Affichage de l'article : Re: Tutorial : Programmer en 'C' sous windows (L4)
Date :
Le 03 avril 2008
From :
Vincent Burel
Sujet :
Re: Tutorial : Programmer en 'C' sous windows (L4)
"Sylvain SF" wrote in message
news:47f4a618$0$898$ba4acef3@news.orange.fr...
> Vincent Burel wrote on 03/04/2008 11:12:
> >
> > Déjà je peux vous mettre à contribution pour une question :
> > quand on ouvre une message box (about box ou confirmation de fermeture)
le
> > code est censé attendre la sortie de l'appel à ce MessageBox (ce sont
des
> > dialogues modales), pourtant nous continuons de recevoir des message
> > WM_TIMER. Comment expliquer ce phénomène simplement ?
>
> MessageBox(..) utile sa propre pompe à message pour recevoir les events
> destinés au dialogue qu'il contrôle, mais le thread principal (et la
> pompe principale) continue de recevoir les msg qui sont destinés à
> toutes les fenêtres qu'il contrôle.
qui dit "seconde pompe à messages" dit seconde boucle de message, donc
second thread, or il ne me semble pas qu'un nouveau thread se crée à
l'ouverture d'une boite de dialogue modale.
> on reçoit des WM_TIMER mais également des WM_UPDATE (les fenêtres sont
> le dialogue modal sont bien redessinées) et tous messages qui ne soit
> pas un ""user event"" (event souris ou clavier).
oui, même des MOUSEMOVE si j'en crois le spy++
> une explication possible est justement qu'un élément modal prive les
> autres éléments d'évènements utilisateur (tous les autres events "plus
> systèmes" continuant à être diffusés).
comment expliquer que notre code attende la sortie de la fonction MessageBox
et qu'il puisse en même temps continuer de faire tourner la boucle de
message ?
VB
Posez vos questions, réponses et remarques sur
les forums de FrameIP
|