Messagefilter - fermeture form par echap

Soyez le premier à donner votre avis sur cette source.

Vue 10 691 fois - Téléchargée 497 fois

Description

Aucune description n'est fournie pour ce projet

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Ramulo Messages postés 2 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 12 octobre 2007
11 oct. 2007 à 14:45
Vraiment nikel ce système, je ne connaissais pas les MessageFilter, c'est bien pratique !
Par contre j'ai pris le parti de ne pas faire une classe 'EchapMessageFilter' dédiée, mais plutot de faire implémenter l'interface directement à mon form, je trouve ca plus simple :

public class Form1 : System.Windows.Forms.Form, IMessageFilter

Merci pour l'astuce en tous cas !
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
13 mai 2006 à 23:59
Ceci devrait peut être t'aider (à améliorer) :

[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern IntPtr GetWindow(HandleRef hWnd, int uCmd);

private const int GW_OWNER = 4;

private bool IsForMe(IntPtr hwnd)
{
bool ret = false;

IntPtr owner = GetWindow(new HandleRef(this, hwnd), GW_OWNER);

if (owner != IntPtr.Zero)
{
Control ctrl = Control.FromHandle(owner);

if (ctrl != null)
ret = this._form.Contains(ctrl);
else
ret = false;
}
else
ret = false;

return ret;
}
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
13 mai 2006 à 23:33
Oui, le problème est exactement le même.
Je pense que tu peux y arriver en utilisant directement les API Win.
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 5
13 mai 2006 à 21:55
Remarque, j'ai dit combobox mais j'ai aussi testé avec une textbox dans une toolbar et le problème reste entier.
Je comptais résoudre le problème de mon application http://www.csdnpicviewer.info en passant par les messages windows (l'evenemnt mouse wheel n'est plus capté lorsque l'utilisateur clique sur la combobox), je crois que je me suis foutu le doigt dans l'oeil. N'y a t-il donc pas une solution?
Sinon, bravo pour cette source, c'est assez instructif =)
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
13 mai 2006 à 21:42
Le problème vient du fait que le contrôle ComboBox fonctionne avec un contrôle Edit interne, et que c'est sur celui ci qu'est envoyé le message.
Hors la méthode Control.FromHandle n'est pas capable de déterminer ce contrôle Edit, d'où la non prise en charge du message :(
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.