Différence entre WM_CLOSE et SC_CLOSE
Je veux juste savoir quelle est la différence entre ces deux constantes de messagerie. Qui dois-je utiliser dans WndProc
méthode lors de la substitution, pour gérer message du bouton de fermeture.
- Vous tagged cette [winforms], utilisez la FormClosing événement. Attention à l'e.CloseReason, ensemble e.Cancel = true pour empêcher la fermeture.
InformationsquelleAutor Soham Dasgupta | 2012-04-11
Vous devez vous connecter pour publier un commentaire.
WM_CLOSE
est envoyé sous la forme d'une fenêtre de message à chaque fois que la fenêtre est demandée doit être fermé, par tous les moyens.SC_CLOSE
est transmis en tant que paramètre d'uneWM_SYSCOMMAND
message, lorsque l'utilisateur appuie sur le bouton Fermer (ou sélectionne Fermer dans le menu de la fenêtre).Celle que vous écoutez est déterminé par action(s) vous tente d'intercepter/traiter avec.
WM_CLOSE
.Selon msdn, SC_CLOSE est l'un des wParam valeurs de WM_SYSCOMMAND message.
WM_CLOSE est un message lui-même.
Ainsi, lorsque la fenêtre reçoit WM_SYSCOMMAND avec la valeur de paramètre SC_CLOSE, alors vous pouvez fermer la fenêtre (envoyer message WM_CLOSE).
Mise à JOUR (si vous voulez permettre à l'utilisateur de fermer la fenêtre gracieusement):
Une application peut demander à l'utilisateur la confirmation, avant la destruction d'une fenêtre, par la transformation du message WM_CLOSE et l'appel de la DestroyWindow fonction uniquement si l'utilisateur confirme le choix.
BTW, si vous utiliser le C#, vous pouvez gérer
FormClosing
évènement et ne vous y travailler. Si vous avez besoin d'annuler la fermeture, alors justee.Cancel = true
pour argument d'événement.CausesValidation = false;
en haut de votre FormClosing gestionnaire d'événement (avant de vous montrer messagebox).