Glisser-déposer OLE
La fonctionnalité glisser-déposer de l’OLE est essentiellement un raccourci pour copier et coller des données. Lorsque vous utilisez le Presse-papiers pour copier et coller des données, un certain nombre d'étapes sont nécessaires. Vous sélectionnez les données, puis sélectionnez Couper ou Copier dans le menu Modifier . Ensuite, vous passez à l’application ou à la fenêtre de destination, puis placez le curseur à l’emplacement cible. Enfin, vous choisissez Modifier>le collage dans le menu.
La fonctionnalité de glisser-déplacer OLE diffère du mécanisme de glisser-déplacer du Gestionnaire de fichiers. Le Gestionnaire de fichiers ne peut gérer que les noms de fichiers et est conçu spécifiquement pour transmettre des noms de fichiers aux applications. Le glisser-déplacer dans OLE est beaucoup plus général. Vous pouvez ainsi faire glisser toutes les données qui peuvent être placées dans le Presse-papiers.
Lorsque vous utilisez la fonction Glisser-déplacer OLE, vous supprimez deux étapes du processus. Vous sélectionnez les données dans la fenêtre source (la « source de dépôt »), puis faites-la glisser vers la destination (la « cible de déplacement »). Vous la déposez en libérant le bouton de la souris. L’opération élimine le besoin de menus, et elle est plus rapide que la séquence de copie/collage. Il n’existe qu’une seule exigence : la source de suppression et la cible de suppression doivent être ouvertes, et au moins partiellement visibles sur l’écran.
À l’aide du glisser-déplacer OLE, les données peuvent être transférées facilement d’un emplacement à un autre : dans un document, entre différents documents ou entre applications. Elle peut être implémentée dans un conteneur ou une application serveur. Toute application peut être une source de suppression, une cible de suppression ou les deux. Si une application implémente à la fois la prise en charge de la source de dépôt et de la cible déroulante, vous pouvez faire glisser-déplacer entre les fenêtres enfants ou dans une seule fenêtre. Cette fonctionnalité facilite considérablement l’utilisation de votre application.
Les objets de données et les sources de données (OLE) expliquent comment implémenter le transfert de données dans vos applications. Il est également utile d’examiner les exemples OLE MFC OCLIENT et HIERSVR.
Implémenter une source de suppression
Pour que votre application fournisse des données à une opération de glisser-déplacer, vous implémentez une source de dépôt. L’implémentation de base d’une source de suppression est relativement simple. La première étape consiste à déterminer les événements qui commencent une opération de glissement. Les instructions d’interface utilisateur recommandées définissent le début d’une opération de glisser comme lorsqu’un événement WM_LBUTTONDOWN se produit sur un point à l’intérieur de certaines données sélectionnées. Les exemples OLE MFC OCLIENT et HIERSVR suivent ces instructions.
Si votre application est un conteneur et que les données sélectionnées sont un objet lié ou incorporé de type COleClientItem
, appelez sa DoDragDrop
fonction membre. Sinon, construisez un COleDataSource
objet, initialisez-le avec la sélection et appelez la fonction membre de l’objet source de DoDragDrop
données. Si votre application est un serveur, utilisez COleServerItem::DoDragDrop
. Pour plus d’informations sur la personnalisation du comportement de glisser-déplacer standard, consultez la section Personnaliser le glisser-déplacer.
Si DoDragDrop
elle retourne DROPEFFECT_MOVE, supprimez immédiatement les données sources du document source. Aucune autre valeur de retour n’a DoDragDrop
d’effet sur une source de suppression.
Pour plus d’informations, consultez objets de données OLE et sources de données : Création et destruction et objets de données OLE et sources de données : Manipulation.
Implémenter une cible de suppression
Il faut un peu plus de travail pour implémenter une cible de suppression qu’une source de suppression, mais il est encore relativement simple.
Pour implémenter une cible de suppression OLE
Si ce n’est pas déjà fait, ajoutez un appel à
AfxOleInit
la fonction membre deInitInstance
votre application. Cet appel est nécessaire pour initialiser les bibliothèques OLE.Ajoutez une variable membre à chaque vue de l’application que vous souhaitez être une cible de suppression. Cette variable membre doit être de type
COleDropTarget
ou une classe dérivée de celle-ci.À partir de la fonction de votre classe d’affichage qui gère le message WM_CREATE (généralement
OnCreate
), appelez la fonction membre deRegister
la nouvelle variable membre.Revoke
sera appelé automatiquement pour vous lorsque votre vue est détruite.Remplacez les fonctions suivantes. Si vous souhaitez le même comportement dans votre application, remplacez ces fonctions dans votre classe d’affichage. Si vous souhaitez modifier le comportement dans des cas isolés ou si vous souhaitez activer la suppression sur des fenêtres non-windows
CView
, remplacez ces fonctions dans votreCOleDropTarget
classe dérivée.Remplacer Pour autoriser OnDragEnter
Supprimer les opérations à effectuer dans la fenêtre. Appelé lorsque le curseur entre d’abord dans la fenêtre. OnDragLeave
Comportement spécial lorsque l’opération de glisser quitte la fenêtre spécifiée. OnDragOver
Supprimer les opérations à effectuer dans la fenêtre. Appelé lorsque le curseur est déplacé sur la fenêtre. OnDrop
Gestion des données supprimées dans la fenêtre spécifiée. OnScrollBy
Comportement spécial pour le défilement est nécessaire dans la fenêtre cible.
Consultez MAINVIEW. Fichier CPP qui fait partie de l’exemple OCLIENT OLE MFC pour obtenir un exemple de fonctionnement de ces fonctions.
Pour plus d’informations, consultez objets de données OLE et sources de données : Création et destruction et objets de données OLE et sources de données : Manipulation.
Personnaliser le glisser-déplacer
L’implémentation par défaut de la fonctionnalité glisser-déplacer est suffisante pour la plupart des applications. Toutefois, certaines applications peuvent vous obliger à modifier ce comportement standard. Cette section explique les étapes nécessaires pour modifier ces valeurs par défaut. Vous pouvez utiliser cette technique pour rendre les applications qui ne prennent pas en charge les documents composés en sources déroulantes.
Si vous personnalisez un comportement de glisser-déplacer OLE standard ou si vous disposez d’une application non OLE, vous devez créer un COleDataSource
objet pour contenir les données. Lorsque l’utilisateur démarre une opération de glisser-déplacer, votre code doit appeler la DoDragDrop
fonction à partir de cet objet au lieu d’autres classes qui prennent en charge les opérations de glisser-déplacer.
Si vous le souhaitez, vous pouvez créer un COleDropSource
objet pour contrôler la suppression et remplacer certaines de ses fonctions en fonction du type de comportement que vous souhaitez modifier. Cet objet drop source est ensuite passé pour COleDataSource::DoDragDrop
modifier le comportement par défaut de ces fonctions. Ces différentes options permettent une grande flexibilité dans la façon dont vous prenez en charge les opérations de glisser-déplacer dans votre application. Pour plus d’informations sur les sources de données, consultez l’article Objets de données et Sources de données (OLE) .
Vous pouvez remplacer les fonctions suivantes pour personnaliser les opérations de glisser-déplacer :
Remplacer | Pour personnaliser |
---|---|
OnBeginDrag |
Comment l’opération de glissement commence après l’appel DoDragDrop . |
GiveFeedback |
Commentaires visuels, tels que l’apparence du curseur, pour différents résultats de suppression. |
QueryContinueDrag |
Arrêt d’une opération de glisser-déplacer. Cette fonction vous permet d’case activée états de touches de modificateur pendant l’opération de glisser. |
Voir aussi
OLE
Objets et sources de données OLE
Objets et sources de données OLE : création et destruction
Objets de données OLE et sources de données : Manipulation
COleClientItem ::D oDragDrop
COleDataSource, classe
COleDataSource ::D oDragDrop
COleDropSource, classe
COleDropTarget, classe
CView ::OnDragLeave