Messagefilter - fermeture form par echap

Soyez le premier à donner votre avis sur cette source.

Vue 10 613 fois - Téléchargée 496 fois

Description

Aucune description n'est fournie pour ce projet

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
2
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
12 octobre 2007

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 !
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
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;
}
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Oui, le problème est exactement le même.
Je pense que tu peux y arriver en utilisant directement les API Win.
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
5
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 =)
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
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.