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
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 lpFormatEtc
lpStgMedium 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