Partager via


Objets de données et sources de données : manipulation

Lorsqu'un objet de données ou une source de données créé, vous pouvez exécuter un certain nombre d'opérations communes sur les données, telles que insérer et les données de suppression, énumérant les formats des données dans est, et plus encore.Cet article décrit les techniques nécessaires pour effectuer les opérations les plus courantes.Les rubriques traitées ici sont les suivantes :

  • Insérer des données dans une source de données

  • Déterminer les formats disponibles dans un objet de données

  • Récupération des données d'un objet de données

Insérer des données dans une source de données

Comment les données sont insérées dans une source de données varie selon que les données sont fournies immédiatement ou à la demande, et dans la prise il est fourni.Les possibilités sont comme suit.

9s5z33c4.collapse_all(fr-fr,VS.110).gifFournissant des données simultanément (rendu immédiat)

  • Appelez pour COleDataSource::CacheGlobalData à plusieurs reprises chaque format de presse-papiers dans lequel vous fournissez des données.Passez le format de presse-papiers à utiliser, un handle vers la mémoire contenant les données et, éventuellement, une structure de FORMATETC décrivant les données.

    ou

  • Si vous souhaitez travailler directement avec les structures de STGMEDIUM , vous appelez COleDataSource::CacheData au lieu d' COleDataSource::CacheGlobalData dans l'option ci-dessus.

9s5z33c4.collapse_all(fr-fr,VS.110).gifFournissant des données à la demande (rendu différé)

Cette rubrique avancée.

  • Appelez pour COleDataSource::DelayRenderData à plusieurs reprises chaque format de presse-papiers dans lequel vous fournissez des données.Passez le format de presse-papiers à utiliser et, éventuellement, une structure de FORMATETC décrivant les données.Lorsque les données est demandée, l'infrastructure appellera COleDataSource::OnRenderData, que vous devez substituer.

    ou

  • Si vous utilisez un objet d' CFile pour fournir des données, appelez COleDataSource::DelayRenderFileData au lieu d' COleDataSource::DelayRenderData dans la première option.Lorsque les données est demandée, l'infrastructure appellera COleDataSource::OnRenderFileData, que vous devez substituer.

Déterminer les formats disponibles dans un objet de données

Avant qu'une application autorise l'utilisateur aux données de coller dans, elle doit savoir s'il existe des formats dans le presse-papiers qu'il peut gérer.Pour ce faire, votre application doit effectuer les opérations suivantes :

  1. Créez un objet d' COleDataObject et une structure de FORMATETC .

  2. Appelez la fonction membre d' AttachClipboard de l'objet de données pour associer l'objet de données avec les données dans le presse-papiers.

  3. Effectuez l'une des opérations suivantes :

    • Appelez la fonction membre d' IsDataAvailable de l'objet de données s'il n'existe qu'un ou deux formats dont vous avez besoin.Cela vous fera gagner du temps dans les cas où les données du presse-papiers prend en charge beaucoup plus de formats dans lesquels votre application.

      ou

    • Appelez la fonction membre d' BeginEnumFormats de l'objet de données pour démarrer énumérer les formats disponibles dans le presse-papiers.Appelez ensuite GetNextFormat jusqu'à ce que le presse-papiers retourne un format prise en charge par votre application ou il n'y a plus de formats.

Si vous utilisez ON_UPDATE_COMMAND_UI, vous pouvez maintenant activer les éléments " special " de coller et, éventuellement, de collage dans le menu Edition.Pour ce faire, appelez CMenu::EnableMenuItem ou CCmdUI::Enable.Pour plus d'informations sur les applications conteneur doivent faire des éléments de menu et lorsque, consultez menus et ressources : ajouts de conteneur.

Récupération des données d'un objet de données

Une fois que vous avez décidé d'un format de données, il ne reste plus qu'à extraire les données de l'objet de données.Pour ce faire, l'utilisateur décide où placer les données, et l'application appelle la fonction appropriée.Les données peuvent être dans l'un des médias suivants :

Moyenne

Fonction à appeler

Mémoire globale (HGLOBAL)

COleDataObject::GetGlobalData

Fichier (CFile)

COleDataObject::GetFileData

Structure deSTGMEDIUM (IStorage)

COleDataObject::GetData

En général, le média est spécifié avec son format de presse-papiers.Par exemple, un objet de CF_EMBEDDEDSTRUCT est toujours dans un média d' IStorage qui requiert une structure de STGMEDIUM .Par conséquent, vous utiliseriez GetData parce qu'il est le seul de ces fonctions qui peuvent recevoir une structure de STGMEDIUM .

Dans les cas où le format de presse-papiers est dans un média d' IStream ou d' HGLOBAL , l'infrastructure peut fournir un pointeur d' CFile qui fait référence à des données.L'application peut ensuite utiliser la lecture de fichier pour obtenir les données de la même façon qu'elle peut importer des données à partir d'un fichier.Fondamentalement, c'est l'interface côté client aux routines d' OnRenderData et d' OnRenderFileData dans la source de données.

L'utilisateur peut maintenant insérer des données dans le document comme pour les autres données dans le même format.

9s5z33c4.collapse_all(fr-fr,VS.110).gifSur quels éléments souhaitez-vous obtenir des informations supplémentaires ?

Voir aussi

Référence

COleDataObject, classe

COleDataSource, classe

Concepts

Objets de données et sources de données () OLE