OVH Cloud OVH Cloud

Détecter un click dans une appli

14 réponses
Avatar
Sylo
Bonjour,

J'ai une form principal qui contient de nombreuse forme enfant. J'aurais
besoin d'avoir un évènement qui se déclenche à chaque click de la souris à
quelques endroits que celui soit fait.
En fait, je pourrait emplémenter tous les évènements click des contrôles et
déclencher un évènement dans la forme principale mais cela serait atrocement
long. J'aurais donc besoin d'un évènement qui se déclenche dans la form
principale des que l'utilisateur click sur la souris (c'est pour faire
disparaitre un menu)

J'espère avoir été clair

Merci

10 réponses

1 2
Avatar
Bismark Prods
Bonjour,

Je réponds pas totalement à la question mais souvent je vois ici et ailleurs
de *jeunes* programmeurs, qui cherchent un moyen simple, court et efficace
de faire des choses compliquées, longues et complexes... ca me fait toujours
un peu sourire ! J'avoue !

Car il faut ce qu'il faut ! Si il y a 20 formulaires enfants dans une
application MDI, je ne vois pas par quelle opération du saint-esprit je
pourrais gérer 20 objets sans écrire au minimum 20 lignes ? à un endroit ou
à un autre ? non ? est-ce que j'ai tord ?

Merci de me remettre à ma place si je suis hors-sujet !

Bonne journée

Bismark
Avatar
Sylo
Si y a moyen de le faire, c super, sinon tant pis !
:-)

"Bismark Prods" <xanaia#nospam#@urbanet.ch> a écrit dans le message de
news:
Bonjour,

Je réponds pas totalement à la question mais souvent je vois ici et


ailleurs
de *jeunes* programmeurs, qui cherchent un moyen simple, court et efficace
de faire des choses compliquées, longues et complexes... ca me fait


toujours
un peu sourire ! J'avoue !

Car il faut ce qu'il faut ! Si il y a 20 formulaires enfants dans une
application MDI, je ne vois pas par quelle opération du saint-esprit je
pourrais gérer 20 objets sans écrire au minimum 20 lignes ? à un endroit


ou
à un autre ? non ? est-ce que j'ai tord ?

Merci de me remettre à ma place si je suis hors-sujet !

Bonne journée

Bismark




Avatar
Patrick Philippot
Sylo wrote:
cela serait atrocement long. J'aurais donc besoin d'un évènement qui
se déclenche dans la form principale des que l'utilisateur click sur
la souris (c'est pour faire disparaitre un menu)



Bonjour,

Surchargez la méthode WndProc ou mieux, PreProcessMessage.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Sylo
ouai ca doit être ca, utiliser WndProc. J'y maitrise pas trop et je voulais
éviter de me plonger dedans mais ca à l'air d'être incontournable..
Merci

"Patrick Philippot" a écrit dans le message
de news:%
Sylo wrote:
> cela serait atrocement long. J'aurais donc besoin d'un évènement qui
> se déclenche dans la form principale des que l'utilisateur click sur
> la souris (c'est pour faire disparaitre un menu)

Bonjour,

Surchargez la méthode WndProc ou mieux, PreProcessMessage.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr




Avatar
Bismark Prods
Moi j'aimerais savoir qu'elles sont les conséquences de chinder le système
des messages ainsi ?

En terme de performance et surtout de sécurité ?

Merci

Bismark
Avatar
Patrick Philippot
Bismark Prods wrote:
Moi j'aimerais savoir qu'elles sont les conséquences de chinder le
système des messages ainsi ?

En terme de performance et surtout de sécurité ?



Si le traitement déclenché ne consiste pas en 3000 lignes de code, je ne
vois pas d'impact évident sur les performances. Quant à la sécurité , en
quoi serait-elle affectée?

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Bismark Prods
Bonjour Patrick,

Je ne parle évidemment pas de la sécurité anti-virus ! mais de la sécurité
et la stabilité dans les threads ! Si il était anodin d'utiliser et
d'intercepter les messages systèmes destinés à l'application, cette
possibilité serait offerte de façon transparente, Or ce n'est pas le cas.

Alors ma tendance naturelle à ne pas bénir le pain gratuit me fait douter
... C'est pas parce qu'on peut faire qqch que c'est forcément bien...

Bonne journée

Bismark
Avatar
Patrick Philippot
Bismark Prods wrote:
Bonjour Patrick,



Salut,

Si il était anodin d'utiliser et d'intercepter les messages
systèmes destinés à l'application, cette possibilité serait
offerte de façon transparente, Or ce n'est pas le cas.



Il s'agit ici d'intercepter les messages souris (et pas le WM_MOUSEMOVE,
ce qui serait plus gênant) pour une action qui paraît relativement
bénigne. Je ne pense pas que ça porte à conséquence. Maintenant, je suis
d'accord, quand on peut éviter de perturber le flux naturel des
messages, tant mieux. Je ne porte pas non plus de jugement sur le bien
fondé de l'approche. Je ne connais pas l'appli et peut-être y a-t-il une
manière plus orthodoxe de régler le problème...

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Sylo
ent tout cas sa marche et en moins de 20 lignes !!!!
merci patrick
Sylo

"Patrick Philippot" a écrit dans le message
de news:
Bismark Prods wrote:
> Bonjour Patrick,

Salut,

> Si il était anodin d'utiliser et d'intercepter les messages
> systèmes destinés à l'application, cette possibilité serait
> offerte de façon transparente, Or ce n'est pas le cas.

Il s'agit ici d'intercepter les messages souris (et pas le WM_MOUSEMOVE,
ce qui serait plus gênant) pour une action qui paraît relativement
bénigne. Je ne pense pas que ça porte à conséquence. Maintenant, je suis
d'accord, quand on peut éviter de perturber le flux naturel des
messages, tant mieux. Je ne porte pas non plus de jugement sur le bien
fondé de l'approche. Je ne connais pas l'appli et peut-être y a-t-il une
manière plus orthodoxe de régler le problème...

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr




Avatar
Zazar
Bonjour,

je ne vois pas par quelle opération du saint-esprit je
pourrais gérer 20 objets sans écrire au minimum 20 lignes ? à un endroit


ou
à un autre ? non ? est-ce que j'ai tord ?



Foreach (IMyInterface myObj in myCollection)
myObj.DoSomething();

2 lignes pour effectuer une action sur autant d'objets que vous voulez.
Personnellement, j'ai tendance, à considérer que si je dois effectuer le
même genre d'actions sur des objets, et que je n'ai pas un moyen simple de
le faire sur tous en même temps, c'est que j'ai un problème d'architecture.
J'irais même à dire que c'est indispensable pour maintenir l'application,
sinon si dans 2 mois vous voulez rajouter un n+1 ième objet du même genre,
il va falloir retrouver toutes les parties de votre code où vous avez besoin
de le manipuler.

--
Zazar
1 2