cs_emmanuel9
Messages postés903Date d'inscriptionmercredi 23 février 2005StatutMembreDernière intervention16 juin 2010
-
29 mars 2006 à 16:43
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 2014
-
29 mars 2006 à 19:27
Bonjour à tous,
J'ai une appli qui bloque l'événement Close avec e.Cancel true ce qui bloque la fermeture de windows. et donc j'utilise WM_QUERYENDSESSION pour détécter quand windows est fermer et le cas echéant mettre e.Cancel false. Le problème est que cette form qui utilise e.Cancal = true appelle une form modal qui utilise le même système ce qui fait que ca ne marche plus.Le
fait d'appeler une form
modale à partir d'une form modale bloque la boucle des messages de la
première, ce qui fait que le message
est perdu pour
la form principale, donc elle n'y réponds pas. Sans réponse, Windows
arrête le processus de fermeture. Comment faire pour être sur dans ce cas que mon appli ne bloque pas la fermeture de windows ? peut ont redemander à l'appli de relancer une fermeture de windows ?
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 29 mars 2006 à 17:03
je pense que le mieux est d'utiliser une variable 'globale' (dans un singleton par exemple) et de la setter à true lorsque tu détectes le WM_QUERYENDSESSION.
pour être sûr de récupérer le message, fait toi une classe Form qui surcharge le message WndProc et qui écoute ce message. Ensuite pour chaque formulaire, au lieu d'hérité de System.Windows.Forms.Form, tu hérites de ta classe.
Facile à mettre en place, et en plus c'est efficace !