IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Pb C++ Simuler drag/drop avec mouse_event


Sujet :

Windows

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 34
    Points : 19
    Points
    19
    Par défaut Pb C++ Simuler drag/drop avec mouse_event
    Bonjour,
    Ma simulation de drag/drop de fichiers entre mes 2 listctrl par la methode mouse_event() ne se termine pas entierement...
    (les listctrl sont justes pour le test car en fait mon drop sera plus tard dans une application externe ;-))
    voici mes actions:
    mouse_event(MOUSEEVENTF_LEFTDOWN,a,b,0,0); //click sur un fichier:ok
    mouse_event(MOUSEEVENTF_MOVE, c,d,0,0);//deplacement souris:ok

    A ce moment:la souris est bien sur la cible destinée mode drag/drop (l'image du cursor le montre)
    Si je clique manuellement, le drag/drop s'effectue bien, par contre, si je rajoute à mon code:
    mouse_event(MOUSEEVENTF_LEFTUP, 0,0,0,0);
    le cursor redevient normal mais pas de drag/drop ! J'ai essayé aussi:
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0,0,0,0);
    mouse_event(MOUSEEVENTF_LEFTUP, 0,0,0,0);
    meme résultat. :-(((
    En gros le msg WM_DROPFILES n'est pas envoyé à la cible.
    Quelqu'un a une idée ?
    Merci d'avance...

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 072
    Points : 12 118
    Points
    12 118
    Par défaut
    Utilisez Spy++ pour connaître précisément l'enchaînement des messages à simuler.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    Merci pour la réponse, mais j'ai déjà regardé, je vois rien de spécial :-(
    J'ai fait un autre test en essayant de dropper dans une windows explorer, meme résultat: si je n envoie pas à la fin de lbuttonup, il me suffit de cliquer là ou est mis le curseur (dans l explorateur) et le fichier se copie bien.
    Mais le mouse_event(MOUSEEVENTF_LEFTUP...) ne déclenche rien dans l'explorateur.

    Je désespère...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    J'avance !
    le mouseevent(MOUSEEVENTF_LEFTUP,...) effectue bien le drag drop si je le lance dans une thread séparée de mon appli...
    C'est donc lié à la file de message de la souris je pense...

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 072
    Points : 12 118
    Points
    12 118
    Par défaut
    Il n'y pas de file de message de la souris, il y a une file de message par thread (par défaut).
    Si vous faites des "mouse_event" dans le thread qui a créé les fenêtres, c'est normal que rien ne ce passe. Pour que les actions/messages de la souris soient pris en compte, il faut que le(s) thread(s) des/la fenêtre où se déroulent les actions passe(nt) par sa/ses fonction(s) de pompe à message. Le thread qui appel "mouse_event" ne devrait pas créer de fenêtre.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    Exact !
    Mais les 2 premiers mouse_event (1erclick+deplacement) sont bien executés...
    Finalement, le drop ne se faisait pas car la thread qui remplit le COleDataObject n'avait pas le temps de s'executer avant mon lbuttonup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Dojo] Réaliser un drag&drop
    Par Stumi dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 25/06/2008, 11h40
  2. Drag & Drop avec un Treeview
    Par Jordmund dans le forum IHM
    Réponses: 4
    Dernier message: 27/02/2008, 13h10
  3. [VB.Net] Drag & Drop avec un label
    Par genius_.net dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/06/2006, 13h52
  4. Réponses: 1
    Dernier message: 24/03/2006, 16h32
  5. pb drag&drop avec le framework netBeans
    Par erwan_ dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 24/03/2006, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo