oui un message est envoyé a tous les programmes leur demandant de se fermer. Ca c'est une certitude. Par contre si je connais tres bien windows, je connais moins bien le c par contre, mais il me semble que le vontol qui est envoyé au prog est le même que celui qui est adresse lorsque tu clic sur la croi, pour fermer la fenetre. Donc tu a rien de plus à faire puisque normalement tu a éjà traiter ce msg dans la boucle de traitement et c'es le même
D'autre te confirmeront pour le msg qui est posté lorsque que tu ferme windows, et en meme tps je m'instrurais
quoi WM_DESTROY ? a ce que j'ai compris c'est WM_ENDSESSION qui est
envoyé. Si quelqu'un pige prquoi ya WM_QUERYENDSESSION qui est envoyé
avant, ca serait bien de l'expliquer ici.
et bien non. je viens de tester, j'y passe ni a la fermeture normale du
prog, ni qd windows se ferme. WM_DESTROY est envoyé uniquement lors
d'un appel explicite à DestroyWindow.
pour faire tes test comme ca car effectivement rebooter la becanne tout le tps c'est gonflant, je te conseil vmware pour emuler des machines. Il existe en version d'evaluation limité ds le tps, qui peut te dépanner de tps en tps
Salut,
moi je comprend msdn comme ca:
- WM_QUERYENDSESSION: demande a l'app si la session peut se terminer (on peut retourner 0 pour empecher la fin de la session)
- WM_ENDSESSION: informe l'app que la session se termine, c'est la qu'il faut executer le code "pour quitter proprement".
Pour moi il ne fait aucun doute que WM_QUERYENDSESSION est envoyé a toutes les applications, et que WM_ENDSESSION n'est envoyé qu'ensuite si et seulement si aucune application n'a retourné 0.
"The system stops sending WM_QUERYENDSESSION messages as soon as one application returns zero"
moi je comprends ca comme: il n'est pas sur que WM_QUERYENDSESSION soit
envoyé a tout le monde, mais je pense que dans le cas ou des programmes
ne le recoivent pas, alors le systeme ne va pas se fermer. Autrement
dit, on est sur que le systeme va se fermer quand on recoit
WM_ENDSESSION, donc mieux vaut peut etre plutot mettre le code de
terminaison dedans...
non ?? car une appli pourrait recevoir WM_QUERYENDSESSION sans que le
systeme ne se ferme (si une autre appli retourne 0; enfin chez moi j'ai
beau retourner 0 ca se ferme qd meme... ;)
"When an application returns TRUE for this message, it receives the
WM_ENDSESSION message and it is terminated, regardless of how the other applications respond to the
WM_QUERYENDSESSION message.
Windows Me/98/95: After all applications return TRUE for this message, they receive the
WM_ENDSESSION and they are terminated."
ha ben en+ ca a l'air de dépendre du systeme.... sur Me/98/95 à ce que
je comprends, on ne recoit pas a coup sur un WM_ENDSESSION apres un
WM_QUERYENDSESSION alors que sur os superieur oui...
WM_QUERYENDSESSION est envoyé aux progs alors que WM_ENDSESSION n'est jamais garanti, on est dependant de comment aura repondu un autre place devant dans la liste d'appels.
est que l'application peut etre fermée si WM_ENDSESSION
n'est pas envoyée?? je crois que non (cela signifierait que windows ne
va finalement pas se fermer), par contre, l'application peut ne pas
etre fermée meme si
WM_QUERYENDSESSION est envoyée non ?
tout à fait mon avis, si on retourne 0 sur WM_QUERYENDSESSION, on ne recevra pas 'normalement' de WM_ENDSESSION car Windows aura stoppé le processus de terminaison, à part si un sauvage appelle ExitWindowsEx avec EWX_FORCE.