Membres inscrits :598
Membres en ligne : 0 Invités en ligne : 6 |
Le drag & drop nécessite d'une source et d'une cible.
Pour créer une source pas besoin de dériver une classe il suffit juste d'écouter un évènement comme MouseLeftDown et de créer une wxDropSource avec le wxDataObject à envoyer. Pour définir une cible il sera nécessaire de créer une classe dérivée pour implémenter le traitement sur les données reçu. (ATTENTION cette classe ne la faite pas dériver de wxWindow cf: explications plus bas )
Première chose savoir ce que l'on veut envoyer. Pour cela allé consulter l'explication de wxDataObject.
Au départ j'étais parti pour envoyer directement le pointeur de l'objet, il m'aurait donc fallut créer mon wxDataObject personnalisé. Comme il est dit dans la doc c'est pas simple mais si vous le fait ça pourra servir à définir un nouveau format qui pourra par exemple être gérer dans les grilles, contrôle de texte, etc. Au final j'ai choisi du texte car c'était suffisant pour retrouver l'objet désigner et surtout plus simple. La source : Code wxWidgets:
La cible: Code wxWidgets:#include "wx/dnd.h"
Il vous reste plus cas associer votre cible à une wxWindow
Code wxWidgets:MyWindow->SetDropTarget( new MyTextDropTarget( aStructure ) ) ; Vous remarquerez que je m'occupe pas de libérer la target car c'est la window qui s'en occupera. Si la target aurais été aussi une fenêtre elle aurait provoquée une erreur lors de la libération sauf si elle n'avait pas de parent. (ps : je vérifirais l'orthographe ce soir , la direction le taff )
Il n'y a pas encore de commentaire pour ce snippet. |