[Visual C++] Gestion du drag&drop

Gestion du drag&drop [Visual C++] - C++ - Programmation

Marsh Posté le 01-08-2003 à 15:20:09    

Bon, je commence à saouler mon peuple sur Blabla, donc je crée un nouveau topic...
Pour les nouveaux arrivants, voilà le topo:
J'ai une appli dialog-based qui en gros ne contient qu'une control list.
J'aurais besoin pour le confort de l'utilisateur de lui permettre de faire un drag&drop à partir de l'explorateur windows, grâce auquel mon appli ferait ses petits traitements après avoir récupéré le chemin du répertoire droppé.
Tout ce que je veux avoir est donc ce chemin.
Voilà maintenant un résumé de la discu sur Blabla:
 
1) Il faut mettre le style "accept files" au dialog (OK)
2) Il faut récupérer l'événement WM_DROPFILES
==> C'est là que ca coince, mon dialog récupère bien l'événement, mais n'appelle pas la fonction qui va avec. Je vous colle mon dernier post là-bas:

Citation :


Si kk'1 peut m'expliquer ça il sera le bienvenu: pour être sûr que je choppe bien mon événement WM_DROPFILES j'ai ajouté à mon dialog une méthode

Code :
  1. BOOL CRotateBaseAdminDlg::PreTranslateMessage( MSG* pMsg )
  2. {
  3. if(pMsg->message == WM_DROPFILES)
  4. AfxMessageBox("Je le tiens!" );
  5. return 0; //pour qu'il traite les messages comme si de rien n'était
  6. }


 
Mais j'avais auparavant noté que:

Code :
  1. CWnd::OnDropFiles 
  2. afx_msg void OnDropFiles( HDROP hDropInfo );


 

Citation :


The framework calls this member function when the user releases the left mouse button over a window that has registered itself as the recipient of dropped files.


 
donc j'ai ajouté ma fonction

Code :
  1. void CRotateBaseAdminDlg::OnDropFiles(HDROP hDropInfo)
  2. {
  3. AfxMessageBox("Je le tiens toujours!" );
  4. }


 
Bien entendu, lorsque je droppe un dossier, il m'affiche le premier mais pas le second...[:sisicaivrai]
Moi ce que je veux, c'est le second, juste... :pt1cable:

Reply

Marsh Posté le 01-08-2003 à 15:20:09   

Reply

Marsh Posté le 01-08-2003 à 15:32:40    

skeye a écrit :

mon dialog récupère bien l'événement, mais n'appelle pas la fonction qui va avec

:heink:

Reply

Marsh Posté le 01-08-2003 à 15:36:09    


Il passe bien dans PreTranslateMessage (et affiche mon MessageBox), mais pas dans OnDropFiles(HDROP hDropInfo)... [:skeye]

Reply

Marsh Posté le 01-08-2003 à 15:38:53    

Bah pkoi tu traites pas le message dans PreTranslateMessage() :??:


Message édité par *syl* le 01-08-2003 à 15:39:03
Reply

Marsh Posté le 01-08-2003 à 15:41:36    

Citation :

polo021 a écrit :
 
 
   
et pourquoi tu appelerais pas ta fonction dans le pretranslatemessage??    
 
 
 
Parce-que j'ai besoin du HDROP hDropInfo passé en param de l'autre...  


[:sinclaire]

Reply

Marsh Posté le 01-08-2003 à 15:42:48    

*Syl* a écrit :

Bah pkoi tu traites pas le message dans PreTranslateMessage() :??:


Parce-que je ne sais pas récupérer le HDROP hDropInfo, là...
Il doit bien être planqué quelquepart dans le MSG, mais j'ai pas trouvé comment l'extraire...

Reply

Marsh Posté le 01-08-2003 à 15:49:43    

Reply

Marsh Posté le 01-08-2003 à 15:53:06    


J'ai encore oublié d'aller direct sur le site de microsoft...j'ai betement maté ma msdn locale qui ne dit pas tout ça!
En tout cas merci...:jap:

Reply

Sujets relatifs:

Leave a Replay

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