Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: [résolu/PC] récupérer les infos de la fin d'un drag n drop  (Lu 2613 fois)
0 Membres et 1 Invité sur ce fil de discussion.
fabyyy Hors ligne
Newbie
*
Messages: 9


Voir le profil
« 23 Octobre 2007, 13:35:08 »

Bonjour !

J'espère que je suis dans le bonne catégorie...

Voici mon problème : J'ai implémenté le drag n drop d'un item d'une ListControl à une fenêtre de l'explorateur windows. L'exemple que j'ai utilisé pour cela, est en fait un fichier (et l'on stocke les infos dans la liste) et on simule le copier-coller.
Mais ce n'est pas mon but, ce que je voudrais c'est faire un drag n drop "visuellement", mais l'item ne représente pas un fichier, en fait il faut que je génère ce fichier dans le répertoire cible du drag n drop quand on relâche le bouton de la souris.

J'ai trouvé qu'on pouvait surcharger la fonction de fin de l'opération avec "QueryContinueDrag" d'après l'aide. Mais j'aurais besoin du path de la fenêtre cible, savez comment le récupérer facilement ?
Merci d'avance !
« Dernière édition: 25 Octobre 2007, 18:28:04 par Mollusk » Journalisée
Arialia Hors ligne
Elite Member
**
Messages: 868


Voir le profil
« Réponse #1 : 23 Octobre 2007, 14:02:51 »

Euh tu pourrais nous dire avec quoi tu développes ?

Bon pour les API windows je suis un peu rouillée moi ( la dernière fois c'était sous windows 95  Azn )

Journalisée

Mon blog de dev   - -  Mon tutoriel sur la libfat -- DSPhoto
Un bon programmeur est fainéant : il déteste refaire la même chose, il fait donc des fonctions Wink

Mais qui m'a mis des nounours roses ? Le rose c'est pour les homo et les gamines , beurk, mais ça va bien aux fleurs Smiley
Et aux jeux de Genevois Wink
fabyyy Hors ligne
Newbie
*
Messages: 9


Voir le profil
« Réponse #2 : 23 Octobre 2007, 14:05:49 »


Oui j'aurais du le préciser tout de suite en effet :
Je bosse en MFC sous vs2005.

Enfin j'ai l'impression que le drag n drop c'est du copier/coller en réalité, mais moi ce que je veux dire c'est une action à la place. En gros, personnaliser l'action du "coller". C'est possible ?

Journalisée
Arialia Hors ligne
Elite Member
**
Messages: 868


Voir le profil
« Réponse #3 : 23 Octobre 2007, 14:12:30 »

à l'intérieur d'une appli oui, mais là .... entre appli je sais pas comment ça marche mais je crois que c'est chaque appli qui le gère non? Comme le copier/coller  Huh?
Journalisée

Mon blog de dev   - -  Mon tutoriel sur la libfat -- DSPhoto
Un bon programmeur est fainéant : il déteste refaire la même chose, il fait donc des fonctions Wink

Mais qui m'a mis des nounours roses ? Le rose c'est pour les homo et les gamines , beurk, mais ça va bien aux fleurs Smiley
Et aux jeux de Genevois Wink
fabyyy Hors ligne
Newbie
*
Messages: 9


Voir le profil
« Réponse #4 : 23 Octobre 2007, 14:16:47 »

Donc tu penses que c'est impossible ? En tout cas avec ma méthode ?

Il doit peut être y avoir moyen de contourner, mais je suis pas un expert non plus ... Undecided
Journalisée
Arialia Hors ligne
Elite Member
**
Messages: 868


Voir le profil
« Réponse #5 : 23 Octobre 2007, 14:34:17 »

ben en fait si c'est possible j'ai déjà vu un prog le faire mais tu dois respecter son protocole ....
Journalisée

Mon blog de dev   - -  Mon tutoriel sur la libfat -- DSPhoto
Un bon programmeur est fainéant : il déteste refaire la même chose, il fait donc des fonctions Wink

Mais qui m'a mis des nounours roses ? Le rose c'est pour les homo et les gamines , beurk, mais ça va bien aux fleurs Smiley
Et aux jeux de Genevois Wink
nico Hors ligne
Jr. Member
**
Messages: 52


Voir le profil WWW
« Réponse #6 : 23 Octobre 2007, 14:44:04 »

ton drag'n drop ce n'est pas du copier-coller,
le controle recoit un certain "type" en entrée, ca peut etre une chaine, un fichier (une chaine représentant un fichier), une liste de fichiers, etc ...
Il faut traiter les événements drag over pour vérifier que ce que l'utilisateur veut dragger correspond bien à ce qu'on attend, et il faut traiter le on drop pour récupérer ce qui a été droppé.

C'est un peu casse pied en MFC, mais ca se fait. En C# c'est encore plus simple  Wink
Journalisée

Blog sur le dev sur DS : http://virtuapeanuts.dev-fr.org
fabyyy Hors ligne
Newbie
*
Messages: 9


Voir le profil
« Réponse #7 : 23 Octobre 2007, 14:49:54 »

ton drag'n drop ce n'est pas du copier-coller,
le controle recoit un certain "type" en entrée, ca peut etre une chaine, un fichier (une chaine représentant un fichier), une liste de fichiers, etc ...
Il faut traiter les événements drag over pour vérifier que ce que l'utilisateur veut dragger correspond bien à ce qu'on attend, et il faut traiter le on drop pour récupérer ce qui a été droppé.

C'est un peu casse pied en MFC, mais ca se fait. En C# c'est encore plus simple  Wink

En fait moi ce n'est pas un "type" en entrée, c'est juste une icone, et je veux générer le fichier uniquement quand l'utilisateur fait le drop, par exemple j'ai testé sur winrar, c'est le cas. L'utilsateur prend un des ficheirs dans l'archive, et le fichier n'est dezippé que quand on relache le bouton de la souris.
Mais comme je traite le "OnDrop" ?, car cette event est appelé sur l'explorateur et non mon applis, je ne vois pas trop comment on y accède...
Journalisée
Arialia Hors ligne
Elite Member
**
Messages: 868


Voir le profil
« Réponse #8 : 23 Octobre 2007, 14:56:42 »

euh toi tu dois avoir un type en sortie , et tu dois avoir un évènement de déclenché quand le drop se termine avec le handle du contrôle concerné enfin je pense Smiley
Journalisée

Mon blog de dev   - -  Mon tutoriel sur la libfat -- DSPhoto
Un bon programmeur est fainéant : il déteste refaire la même chose, il fait donc des fonctions Wink

Mais qui m'a mis des nounours roses ? Le rose c'est pour les homo et les gamines , beurk, mais ça va bien aux fleurs Smiley
Et aux jeux de Genevois Wink
nico Hors ligne
Jr. Member
**
Messages: 52


Voir le profil WWW
« Réponse #9 : 23 Octobre 2007, 15:08:50 »

de toutes facons, si tu dragues (petit coquinou  Cheesy) des files (ca serait mieux des filles  whistle), il va faloir que tu traites l'événement OnDropFiles et que tu DragQueryFile

Si tu utilises OLE, tu as juste à récuperer l'objet dans le COleDataObject de ton ondrop
Journalisée

Blog sur le dev sur DS : http://virtuapeanuts.dev-fr.org
fabyyy Hors ligne
Newbie
*
Messages: 9


Voir le profil
« Réponse #10 : 23 Octobre 2007, 15:14:28 »

de toutes facons, si tu dragues (petit coquinou  Cheesy) des files (ca serait mieux des filles  whistle), il va faloir que tu traites l'événement OnDropFiles et que tu DragQueryFile

Si tu utilises OLE, tu as juste à récuperer l'objet dans le COleDataObject de ton ondrop

lol,
Mais je me demande quand même si on est bien en phase, je fais un drag de mon applis vers l'explorateur, on est bien d'accord ? le seul event que j'ai c'est "BeginDrag" pour l'instant.
Journalisée
nico Hors ligne
Jr. Member
**
Messages: 52


Voir le profil WWW
« Réponse #11 : 23 Octobre 2007, 15:33:22 »

ah oué, non, comme tu dis, on est pas en phase, j'avais compris l'inverse  Cheesy

Dans ce cas, rien de tel que l'article de nish http://www.codeproject.com/tips/ExplorerDelayDrop.asp
Journalisée

Blog sur le dev sur DS : http://virtuapeanuts.dev-fr.org
fabyyy Hors ligne
Newbie
*
Messages: 9


Voir le profil
« Réponse #12 : 23 Octobre 2007, 15:38:25 »

ah oué, non, comme tu dis, on est pas en phase, j'avais compris l'inverse  Cheesy

Dans ce cas, rien de tel que l'article de nish http://www.codeproject.com/tips/ExplorerDelayDrop.asp

Hum, ca m'a l'air d'être ce que je cherche en effet, merci !!  Wink
Journalisée
MasterDje Hors ligne
Diet Coke Addict
Global Moderator
*****
Messages: 3249


Voir le profil WWW
« Réponse #13 : 23 Octobre 2007, 15:43:21 »

Nico rules !  Azn
Journalisée

fabyyy Hors ligne
Newbie
*
Messages: 9


Voir le profil
« Réponse #14 : 25 Octobre 2007, 17:53:55 »

Bon finalement j'ai réussi ! Mais je n'ai pas vraiment utilisé la méthode de l'exemple, je récupère sur le SourceOle l'évènement "drop" avec la fonction QueryContinueDrag. Et je génère le fichier à ce moment là. Et j'utilise le format "CF_HDROP" pour le copier-coller.

Voila Smiley
Journalisée
Pages: [1]   Haut de page
Imprimer

Aller à: