Partager via


COleDataSource, classe

Agit comme un cache dans lequel une application place les données qu’elle proposera pendant les opérations de transfert de données, par exemple les opérations du Presse-papiers ou de glisser-déposer.

Syntaxe

class COleDataSource : public CCmdTarget

Membres

Constructeurs publics

Nom Description
COleDataSource ::COleDataSource Construit un objet COleDataSource.

Méthodes publiques

Nom Description
COleDataSource ::CacheData Offre des données dans un format spécifié à l’aide d’une STGMEDIUM structure.
COleDataSource ::CacheGlobalData Offre des données dans un format spécifié à l’aide d’un HGLOBAL.
COleDataSource ::D elayRenderData Offre des données dans un format spécifié à l’aide du rendu différé.
COleDataSource ::D elayRenderFileData Offre des données dans un format spécifié dans un CFile pointeur.
COleDataSource ::D elaySetData Appelé pour chaque format pris en charge dans OnSetData.
COleDataSource ::D oDragDrop Effectue des opérations de glisser-déplacer avec une source de données.
COleDataSource ::Empty Vide l’objet COleDataSource des données.
COleDataSource ::FlushClipboard Affiche toutes les données dans le Presse-papiers.
COleDataSource ::GetClipboardOwner Vérifie que les données placées dans le Presse-papiers sont toujours là.
COleDataSource ::OnRenderData Récupère les données dans le cadre du rendu différé.
COleDataSource ::OnRenderFileData Récupère des données dans le CFile cadre du rendu différé.
COleDataSource ::OnRenderGlobalData Récupère des données dans un HGLOBAL dans le cadre du rendu différé.
COleDataSource ::OnSetData Appelé pour remplacer les données dans l’objet COleDataSource .
COleDataSource ::SetClipboard Place un COleDataSource objet dans le Presse-papiers.

Notes

Vous pouvez créer directement des sources de données OLE. Sinon, les classes COleClientItem et COleServerItem créent des sources de données OLE en réponse à leurs CopyToClipboard fonctions membres.DoDragDrop Consultez COleServerItem ::CopyToClipboard pour obtenir une brève description. Remplacez la OnGetClipboardData fonction membre de votre élément client ou classe d’élément de serveur pour ajouter des formats de Presse-papiers supplémentaires aux données de la source de données OLE créée pour la CopyToClipboard fonction ou DoDragDrop membre.

Chaque fois que vous souhaitez préparer des données pour un transfert, vous devez créer un objet de cette classe et le remplir avec vos données à l’aide de la méthode la plus appropriée pour vos données. La façon dont elle est insérée dans une source de données est directement affectée par le fait que les données soient fournies immédiatement (rendu immédiat) ou à la demande (rendu différé). Pour chaque format de Presse-papiers dans lequel vous fournissez des données en passant le format Presse-papiers à utiliser (et une structure FORMATETC facultative), appelez DelayRenderData.

Pour plus d’informations sur les sources de données et le transfert de données, consultez l’article Objets de données et Sources de données (OLE) . En outre, les rubriques du Presse-papiers de l’article décrivent le mécanisme ole Presse-papiers.

Hiérarchie d'héritage

CObject

CCmdTarget

COleDataSource

Spécifications

En-tête : afxole.h

COleDataSource ::CacheData

Appelez cette fonction pour spécifier un format dans lequel les données sont proposées pendant les opérations de transfert de données.

void CacheData(
    CLIPFORMAT cfFormat,
    LPSTGMEDIUM lpStgMedium,
    LPFORMATETC lpFormatEtc = NULL);

Paramètres

cfFormat
Format du Presse-papiers dans lequel les données doivent être proposées. Ce paramètre peut être l’un des formats de Presse-papiers prédéfinis ou la valeur retournée par la fonction Windows RegisterClipboardFormat native.

lpStgMedium
Pointe vers une structure STGMEDIUM contenant les données au format spécifié.

lpFormatEtc
Pointe vers une structure FORMATETC décrivant le format dans lequel les données doivent être proposées. Fournissez une valeur pour ce paramètre si vous souhaitez spécifier des informations de format supplémentaires au-delà du format Presse-papiers spécifié par cfFormat. S’il s’agit de NULL, les valeurs par défaut sont utilisées pour les autres champs de la FORMATETC structure.

Notes

Vous devez fournir les données, car cette fonction la fournit à l’aide du rendu immédiat. Les données sont mises en cache jusqu’à ce que nécessaire.

Fournissez les données à l’aide d’une structure STGMEDIUM . Vous pouvez également utiliser la CacheGlobalData fonction membre si la quantité de données que vous fournissez est suffisamment petite pour être transférée efficacement à l’aide d’un HGLOBAL.

Après l’appel au CacheData membre et au ptd contenu de lpFormatEtclpStgMedium sont détenus par l’objet de données, et non par l’appelant.

Pour utiliser le rendu différé, appelez la fonction membre DelayRenderData ou DelayRenderFileData . Pour plus d’informations sur le rendu différé géré par MFC, consultez l’article Objets de données et sources de données : Manipulation.

Pour plus d’informations, consultez les structures STGMEDIUM et FORMATETC dans le Kit de développement logiciel (SDK) Windows.

Pour plus d’informations, consultez RegisterClipboardFormat dans le Kit de développement logiciel (SDK) Windows.

COleDataSource ::CacheGlobalData

Appelez cette fonction pour spécifier un format dans lequel les données sont proposées pendant les opérations de transfert de données.

void CacheGlobalData(
    CLIPFORMAT cfFormat,
    HGLOBAL hGlobal,
    LPFORMATETC lpFormatEtc = NULL);

Paramètres

cfFormat
Format du Presse-papiers dans lequel les données doivent être proposées. Ce paramètre peut être l’un des formats de Presse-papiers prédéfinis ou la valeur retournée par la fonction Windows RegisterClipboardFormat native.

hGlobal
Gérez le bloc de mémoire globale contenant les données au format spécifié.

lpFormatEtc
Pointe vers une structure FORMATETC décrivant le format dans lequel les données doivent être proposées. Fournissez une valeur pour ce paramètre si vous souhaitez spécifier des informations de format supplémentaires au-delà du format Presse-papiers spécifié par cfFormat. S’il s’agit de NULL, les valeurs par défaut sont utilisées pour les autres champs de la FORMATETC structure.

Notes

Cette fonction fournit les données à l’aide du rendu immédiat. Vous devez donc fournir les données lors de l’appel de la fonction ; les données sont mises en cache jusqu’à ce que nécessaire. Utilisez la CacheData fonction membre si vous fournissez une grande quantité de données ou si vous avez besoin d’un support de stockage structuré.

Pour utiliser le rendu différé, appelez la fonction membre DelayRenderData ou DelayRenderFileData . Pour plus d’informations sur le rendu différé géré par MFC, consultez l’article Objets de données et sources de données : Manipulation.

Pour plus d’informations, consultez la structure FORMATETC dans le Kit de développement logiciel (SDK) Windows.

Pour plus d’informations, consultez RegisterClipboardFormat dans le Kit de développement logiciel (SDK) Windows.

COleDataSource ::COleDataSource

Construit un objet COleDataSource.

COleDataSource();

COleDataSource ::D elayRenderData

Appelez cette fonction pour spécifier un format dans lequel les données sont proposées pendant les opérations de transfert de données.

void DelayRenderData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

Paramètres

cfFormat
Format du Presse-papiers dans lequel les données doivent être proposées. Ce paramètre peut être l’un des formats de Presse-papiers prédéfinis ou la valeur retournée par la fonction Windows RegisterClipboardFormat native.

lpFormatEtc
Pointe vers une structure FORMATETC décrivant le format dans lequel les données doivent être proposées. Fournissez une valeur pour ce paramètre si vous souhaitez spécifier des informations de format supplémentaires au-delà du format Presse-papiers spécifié par cfFormat. S’il s’agit de NULL, les valeurs par défaut sont utilisées pour les autres champs de la FORMATETC structure.

Notes

Cette fonction fournit les données à l’aide du rendu différé, de sorte que les données ne sont pas fournies immédiatement. La fonction membre OnRenderData ou OnRenderGlobalData est appelée pour demander les données.

Utilisez cette fonction si vous ne souhaitez pas fournir vos données via un CFile objet. Si vous souhaitez fournir les données via un CFile objet, appelez la fonction membre DelayRenderFileData . Pour plus d’informations sur le rendu différé géré par MFC, consultez l’article Objets de données et sources de données : Manipulation.

Pour utiliser le rendu immédiat, appelez la fonction membre CacheData ou CacheGlobalData .

Pour plus d’informations, consultez la structure FORMATETC dans le Kit de développement logiciel (SDK) Windows.

Pour plus d’informations, consultez RegisterClipboardFormat dans le Kit de développement logiciel (SDK) Windows.

COleDataSource ::D elayRenderFileData

Appelez cette fonction pour spécifier un format dans lequel les données sont proposées pendant les opérations de transfert de données.

void DelayRenderFileData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

Paramètres

cfFormat
Format du Presse-papiers dans lequel les données doivent être proposées. Ce paramètre peut être l’un des formats de Presse-papiers prédéfinis ou la valeur retournée par la fonction Windows RegisterClipboardFormat native.

lpFormatEtc
Pointe vers une structure FORMATETC décrivant le format dans lequel les données doivent être proposées. Fournissez une valeur pour ce paramètre si vous souhaitez spécifier des informations de format supplémentaires au-delà du format Presse-papiers spécifié par cfFormat. S’il s’agit de NULL, les valeurs par défaut sont utilisées pour les autres champs de la FORMATETC structure.

Notes

Cette fonction fournit les données à l’aide du rendu différé, de sorte que les données ne sont pas fournies immédiatement. La fonction membre OnRenderFileData est appelée pour demander les données.

Utilisez cette fonction si vous allez utiliser un CFile objet pour fournir les données. Si vous ne souhaitez pas utiliser d’objet CFile , appelez la fonction membre DelayRenderData . Pour plus d’informations sur le rendu différé géré par MFC, consultez l’article Objets de données et sources de données : Manipulation.

Pour utiliser le rendu immédiat, appelez la fonction membre CacheData ou CacheGlobalData .

Pour plus d’informations, consultez la structure FORMATETC dans le Kit de développement logiciel (SDK) Windows.

Pour plus d’informations, consultez RegisterClipboardFormat dans le Kit de développement logiciel (SDK) Windows.

COleDataSource ::D elaySetData

Appelez cette fonction pour prendre en charge la modification du contenu de la source de données.

void DelaySetData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

Paramètres

cfFormat
Format du Presse-papiers dans lequel les données doivent être placées. Ce paramètre peut être l’un des formats de Presse-papiers prédéfinis ou la valeur retournée par la fonction Windows RegisterClipboardFormat native.

lpFormatEtc
Pointe vers une structure FORMATETC décrivant le format dans lequel les données doivent être remplacées. Fournissez une valeur pour ce paramètre si vous souhaitez spécifier des informations de format supplémentaires au-delà du format Presse-papiers spécifié par cfFormat. S’il s’agit de NULL, les valeurs par défaut sont utilisées pour les autres champs de la FORMATETC structure.

Notes

OnSetData est appelé par l’infrastructure lorsque cela se produit. Cela est utilisé uniquement lorsque l’infrastructure retourne la source de données à partir de COleServerItem ::GetDataSource. Si DelaySetData elle n’est pas appelée, votre OnSetData fonction ne sera jamais appelée. DelaySetData doit être appelé pour chaque Presse-papiers ou FORMATETC format pris en charge.

Pour plus d’informations, consultez la structure FORMATETC dans le Kit de développement logiciel (SDK) Windows.

Pour plus d’informations, consultez RegisterClipboardFormat dans le Kit de développement logiciel (SDK) Windows.

COleDataSource ::D oDragDrop

Appelez la DoDragDrop fonction membre pour effectuer une opération de glisser-déplacer pour cette source de données, généralement dans un gestionnaire CWnd ::OnLButtonDown .

DROPEFFECT DoDragDrop(
    DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE|DROPEFFECT_LINK,
    LPCRECT lpRectStartDrag = NULL,
    COleDropSource* pDropSource = NULL);

Paramètres

dwEffects
Opérations de glisser-déplacer autorisées sur cette source de données. Il peut s’agir d’un ou de plusieurs des éléments suivants :

  • DROPEFFECT_COPY une opération de copie peut être effectuée.

  • DROPEFFECT_MOVE Une opération de déplacement peut être effectuée.

  • DROPEFFECT_LINK Un lien des données supprimées vers les données d’origine peut être établi.

  • DROPEFFECT_SCROLL Indique qu’une opération de défilement glisser peut se produire.

lpRectStartDrag
Pointeur vers le rectangle qui définit l’emplacement où le glisser démarre réellement. Pour plus d'informations, consultez la section Notes qui suit.

pDropSource
Pointe vers une source de dépôt. Si NULL, une implémentation par défaut de COleDropSource sera utilisée.

Valeur de retour

Effet de déplacement généré par l’opération de glisser-déplacer ; sinon, DROPEFFECT_NONE si l’opération ne commence jamais, car l’utilisateur a libéré le bouton de la souris avant de quitter le rectangle fourni.

Notes

L’opération glisser-déplacer ne démarre pas immédiatement. Il attend que le curseur de la souris quitte le rectangle spécifié par lpRectStartDrag ou jusqu’à ce qu’un nombre spécifié de millisecondes soit passé. Si lpRectStartDrag a la valeur NULL, la taille du rectangle est d’un pixel.

Le délai est spécifié par un paramètre de clé de Registre. Vous pouvez modifier le délai en appelant CWinApp ::WriteProfileString ou CWinApp ::WriteProfileInt. Si vous ne spécifiez pas le délai, une valeur par défaut de 200 millisecondes est utilisée. Le délai de glissement est stocké comme suit :

  • Le délai de glissement Windows NT est stocké dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\NT\CurrentVersion\IniFileMapping\win.ini\Windows\DragDelay.

  • Le délai de glissement Windows 3.x est stocké dans win. Fichier INI, sous la section [Windows}.

  • Le délai de glissement windows 95/98 est stocké dans une version mise en cache de WIN. INI.

Pour plus d’informations sur la façon dont les informations de retard de glissement sont stockées dans le Registre ou dans le . Fichier INI, consultez WriteProfileString dans le Kit de développement logiciel (SDK) Windows.

Pour plus d’informations, consultez l’article OLE glisser-déplacer.

COleDataSource ::Empty

Appelez cette fonction pour vider l’objet COleDataSource de données.

void Empty();

Notes

Les formats de rendu mis en cache et différés sont vidés afin qu’ils puissent être réutilisés.

Pour plus d’informations, consultez ReleaseStgMedium dans le Kit de développement logiciel (SDK) Windows.

COleDataSource ::FlushClipboard

Affiche les données qui se trouve dans le Presse-papiers, puis vous permet de coller des données à partir du Presse-papiers après l’arrêt de votre application.

static void PASCAL FlushClipboard();

Notes

Utilisez SetClipboard pour placer des données dans le Presse-papiers.

COleDataSource ::GetClipboardOwner

Détermine si les données du Presse-papiers ont changé depuis que SetClipboard a été appelé pour la dernière fois et, le cas échéant, identifie le propriétaire actuel.

static COleDataSource* PASCAL GetClipboardOwner();

Valeur de retour

Source de données actuellement dans le Presse-papiers, ou NULL s’il n’y a rien dans le Presse-papiers ou si le Presse-papiers n’appartient pas à l’application appelante.

COleDataSource ::OnRenderData

Appelé par l’infrastructure pour récupérer les données au format spécifié.

virtual BOOL OnRenderData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium);

Paramètres

lpFormatEtc
Pointe vers la structure FORMATETC spécifiant le format dans lequel les informations sont demandées.

lpStgMedium
Pointe vers une structure STGMEDIUM dans laquelle les données doivent être retournées.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

Le format spécifié est un format précédemment placé dans l’objet à l’aide COleDataSource de la fonction membre DelayRenderData ou DelayRenderFileData pour le rendu différé. L’implémentation par défaut de cette fonction appelle OnRenderFileData ou OnRenderGlobalData si le support de stockage fourni est un fichier ou une mémoire, respectivement. Si aucun de ces formats n’est fourni, l’implémentation par défaut retourne 0 et ne fait rien. Pour plus d’informations sur le rendu différé géré par MFC, consultez l’article Objets de données et sources de données : Manipulation.

Si lpStgMedium-tymed> est TYMED_NULL, le STGMEDIUM doit être alloué et rempli comme spécifié par lpFormatEtc-tymed.> S’il n’est pas TYMED_NULL, celui-ci STGMEDIUM doit être renseigné sur place avec les données.

Il s’agit d’un élément substituable avancé. Remplacez cette fonction pour fournir vos données au format et au support demandés. Selon vos données, vous pouvez remplacer l’une des autres versions de cette fonction à la place. Si vos données sont petites et fixes en taille, remplacez OnRenderGlobalData. Si vos données se trouvent dans un fichier ou sont de taille variable, remplacez OnRenderFileData.

Pour plus d’informations, consultez les structures STGMEDIUM et FORMATETC , le type d’énumération TYMED et IDataObject ::GetData dans le Kit de développement logiciel (SDK) Windows.

COleDataSource ::OnRenderFileData

Appelé par l’infrastructure pour récupérer des données au format spécifié lorsque le support de stockage spécifié est un fichier.

virtual BOOL OnRenderFileData(
    LPFORMATETC lpFormatEtc,
    CFile* pFile);

Paramètres

lpFormatEtc
Pointe vers la structure FORMATETC spécifiant le format dans lequel les informations sont demandées.

pFile
Pointe vers un objet CFile dans lequel les données doivent être rendues.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

Le format spécifié est un format précédemment placé dans l’objet à l’aide COleDataSource de la fonction membre DelayRenderData pour le rendu différé. L’implémentation par défaut de cette fonction retourne simplement FALSE.

Il s’agit d’un élément substituable avancé. Remplacez cette fonction pour fournir vos données au format et au support demandés. Selon vos données, vous pouvez remplacer l’une des autres versions de cette fonction à la place. Si vous souhaitez gérer plusieurs supports de stockage, remplacez OnRenderData. Si vos données se trouvent dans un fichier ou sont de taille variable, remplacez OnRenderFileData. Pour plus d’informations sur le rendu différé géré par MFC, consultez l’article Objets de données et sources de données : Manipulation.

Pour plus d’informations, consultez la structure FORMATETC et IDataObject ::GetData dans le Kit de développement logiciel (SDK) Windows.

COleDataSource ::OnRenderGlobalData

Appelé par l’infrastructure pour récupérer des données au format spécifié lorsque le support de stockage spécifié est la mémoire globale.

virtual BOOL OnRenderGlobalData(
    LPFORMATETC lpFormatEtc,
    HGLOBAL* phGlobal);

Paramètres

lpFormatEtc
Pointe vers la structure FORMATETC spécifiant le format dans lequel les informations sont demandées.

phGlobal
Pointe vers un handle vers la mémoire globale dans laquelle les données doivent être retournées. Si aucun paramètre n’a encore été alloué, ce paramètre peut être NULL.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

Le format spécifié est un format précédemment placé dans l’objet à l’aide COleDataSource de la fonction membre DelayRenderData pour le rendu différé. L’implémentation par défaut de cette fonction retourne simplement FALSE.

Si phGlobal est NULL, un nouveau HGLOBAL doit être alloué et retourné dans phGlobal. Sinon, le HGLOBAL spécifié par phGlobal doit être rempli avec les données. La quantité de données placées dans le HGLOBAL ne doit pas dépasser la taille actuelle du bloc de mémoire. En outre, le bloc ne peut pas être réaffecté à une plus grande taille.

Il s’agit d’un élément substituable avancé. Remplacez cette fonction pour fournir vos données au format et au support demandés. Selon vos données, vous pouvez remplacer l’une des autres versions de cette fonction à la place. Si vous souhaitez gérer plusieurs supports de stockage, remplacez OnRenderData. Si vos données se trouvent dans un fichier ou sont de taille variable, remplacez OnRenderFileData. Pour plus d’informations sur le rendu différé géré par MFC, consultez l’article Objets de données et sources de données : Manipulation.

Pour plus d’informations, consultez la structure FORMATETC et IDataObject ::GetData dans le Kit de développement logiciel (SDK) Windows.

COleDataSource ::OnSetData

Appelé par l’infrastructure pour définir ou remplacer les données dans l’objet COleDataSource au format spécifié.

virtual BOOL OnSetData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium,
    BOOL bRelease);

Paramètres

lpFormatEtc
Pointe vers la structure FORMATETC spécifiant le format dans lequel les données sont remplacées.

lpStgMedium
Pointe vers la structure STGMEDIUM contenant les données qui remplacent le contenu actuel de l’objet COleDataSource .

bRelease
Indique qui a la propriété du support de stockage après avoir terminé l’appel de fonction. L’appelant décide qui est responsable de la libération des ressources allouées pour le compte du support de stockage. L’appelant effectue cette opération en définissant bRelease. Si bRelease n’est pas zéro, la source de données prend possession et libère le support lorsqu’elle a fini de l’utiliser. Lorsque bRelease est 0, l’appelant conserve la propriété et la source de données peut utiliser le support de stockage uniquement pendant la durée de l’appel.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

La source de données ne prend pas possession des données tant qu’elles n’ont pas réussi à l’obtenir. Autrement dit, elle ne prend pas possession si OnSetData elle retourne 0. Si la source de données prend possession, elle libère le support de stockage en appelant la fonction ReleaseStgMedium .

L'implémentation par défaut n'exécute aucune opération. Remplacez cette fonction pour remplacer les données au format spécifié. Il s’agit d’un élément substituable avancé.

Pour plus d’informations, consultez les structures STGMEDIUM et FORMATETC et les fonctions ReleaseStgMedium et IDataObject ::GetData dans le Kit de développement logiciel (SDK) Windows.

COleDataSource ::SetClipboard

Place les données contenues dans l’objet dans le COleDataSource Presse-papiers après avoir appelé l’une des fonctions suivantes : CacheData, CacheGlobalData, DelayRenderData ou DelayRenderFileData.

void SetClipboard();

Voir aussi

Exemple MFC HIERSVR
Exemple OCLIENT MFC
CCmdTarget, classe
Graphique hiérarchique
COleDataObject, classe