[c#] détecter le drag and drop de fenetre

détecter le drag and drop de fenetre [c#] - C#/.NET managed - Programmation

Marsh Posté le 20-06-2005 à 17:33:50    

bonjour,
alors voila mon problème, j'aimerais détecter le drag and drop ou le déplacer de fenetre windows sur ma winform.....
comment faire ??

Reply

Marsh Posté le 20-06-2005 à 17:33:50   

Reply

Marsh Posté le 20-06-2005 à 18:25:56    

Y'a pas un Onxxx qui correspond?
Au pire tu gére le OnClick en comparant la position avant le OnClick et après, non?

Reply

Marsh Posté le 21-06-2005 à 09:07:00    

alors je reformule mon problème:
j'ai une winform et je veux pouvoir détecter tout les déplacer relacher de toutes les fenêtres possible dans windows dessus.
il n'y aura pas OnClick sur ma forme; il y aurait pu y avoir un OnMouseUp au pire, mais ce n'est pas le cas.

Reply

Marsh Posté le 21-06-2005 à 09:31:23    

il y a un évenement conçu pour!
 
pour la cible me semble que c'est "DoDragDrop"
 
si tu as besoin plus d'infos, j'ai un petit tutorial écris par un de mes professeurs concerant le Drag and Drop!  
 
si cela t'intéresse fait le moi savoir : laurent.bindels@swing.be


Message édité par moi23372 le 21-06-2005 à 09:32:20
Reply

Marsh Posté le 21-06-2005 à 09:40:41    

non c pas le dodragdrop...... pourquoi personne ne comprends ce que je veux dire :'( ....
je vais rereformuler:
j'ai une winform appelé XXX qui est codée par moi !!
si déplace une fenêtre windows (explorateur ou autre) et que je la met dessus ma winform XXX , j'aimerais que ma winform XXX le détecte et me dise ya une fenetre avec un handle YYY qui a été déplacé au dessus de moi !!

Reply

Marsh Posté le 21-06-2005 à 09:45:43    

c'est fait automatiquement mon coco!  
 
l'évènement paint te sera signalé par windows! en fait cette évènement te dira quel partie de ta fenètre tu dois redessiné car voila une fenetre est passé dessus et tu as minimisé ta fenetre!
 
anciennement cette évènement était appelé VM_PAINT et est signalé directement par windows! cherche de ce coté la histoire de voir si tu ne sais pas voir la provenance de l'évènement....
 
 
PS: La prochaine fois, ne parle pas de drag and drop! surtout qu'ici c'est pas du tout ce que tu voulais faire... Essaye d'être plus clair la prochaine fois.

Reply

Marsh Posté le 21-06-2005 à 09:52:26    

Premièrement, ok,  le terme drag and drop est peut etre mal approprié; mais j'ai dit "drag an drop de fenetre" c'est deja un peu plus imagé...
Deuxièmement, je sais bien que cela est fait automatiquement mon caca !
je veux que mon appli détecte les fenêtres qui seront déplacer dessus pour pouvoir y faire des actions bien spécifiques
 
PS: c'est pas VM_PAINT mais WM_PAINT, apprends à écrire la prochaine fois


Message édité par th3r1ddl3r le 21-06-2005 à 09:53:43
Reply

Marsh Posté le 21-06-2005 à 11:22:22    

A priori tu viens de te suicider forumement parlant en envoyant chier les personnes qui veulent t'aider et au passage ceci n'est pas specialement une conerie sauf que y'a un pb d'ordre et de destinataire de message
 

Citation :

l'évènement paint te sera signalé par windows! en fait cette évènement te dira quel partie de ta fenètre tu dois redessiné car voila une fenetre est passé dessus et tu as minimisé ta fenetre!


 
Le PB est que tu veux entre autre acceder aux evènements qui ne sont pas destiné a ta Form mais au systeme et en Code managé pur , je ne pense pas que ce soit possible  
-------> Hook peut être

Reply

Marsh Posté le 21-06-2005 à 14:41:53    

as-tu bien pensé à mettre la propriété "AllowDrop" de ta fenetre à true ?
 
Ensuite, assigne les evenements "DragEnter" et "DragDrop" de ta fenetre pour recuperer les datas dans le eventargs e.Data
 
Un conseil, gère bien le type de tes e.datas dans la procédure evennementielle "dragdrop" ;)

Reply

Marsh Posté le 21-06-2005 à 15:00:22    

ixemul a écrit :

as-tu bien pensé à mettre la propriété "AllowDrop" de ta fenetre à true ?
 
Ensuite, assigne les evenements "DragEnter" et "DragDrop" de ta fenetre pour recuperer les datas dans le eventargs e.Data
 
Un conseil, gère bien le type de tes e.datas dans la procédure evennementielle "dragdrop" ;)


je t'invite à relire le post dans son intégralité

Reply

Marsh Posté le 21-06-2005 à 15:00:22   

Reply

Marsh Posté le 21-06-2005 à 15:26:07    

Si je relis bien tu utilise donc le terme "dragdrop" malencontreusement, car tu ne cherche pas a gerer un evennement de dragdrop, tu veux seulement savoir si l'utilisateur deplace une fenetre au dessus de la tienne...  
 
Pour cela, il va te falloir utiliser un systeme avec un thread qui scanne tout les process en cours (Voir la classe System.Diagnostic.Process ) qui te permet de recuperer le handle de la fenetre principal d'un processus windows, il te reste plus qu'a savoir laquelle est active et son deplacement sur ta fenetre...
 
regarde un peu du coté de codeproject, en particulier cet exemple de popup killer -> http://www.codeproject.com/csharp/popupkiller.asp   qui propose des methode de detection de fenetre

Reply

Marsh Posté le 21-06-2005 à 16:42:20    

hum perso j'ai meme pas envie de répondre a ton post vu comment t'es agréable quand tu parles...
 
bon sang il a écrit VM_PAINT au lieu de WM_PAINT... on devrai le bannir serieu


---------------
Se souvenir des belles choses...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed