Partager via


Presse-papiers : Utiliser le presse-papiers windows

Cette rubrique décrit comment utiliser l'API standard de le presse-papiers windows dans votre application MFC.

La plupart des applications pour Windows prennent en charge des données de coupe ou de copier dans le presse-papiers windows et les données de coller du presse-papiers.Les formats de données du Presse-papiers varient entre les applications.Elle prend uniquement en charge un nombre limité de formats de presse-papiers pour un nombre limité de classes.Vous implémenterez normalement les commandes Presse-papiers-mises en relation — couper, copier, puis collez — dans le menu Edition pour la vue.La bibliothèque de classes définissent les ID de commande pour ces commandes : ID_EDIT_CUT, ID_EDIT_COPY, et ID_EDIT_PASTE.Leurs messages de ligne de message sont également définies.

Messages et commandes de l'infrastructure explique comment gérer les commandes de menu dans votre application en mappant la commande de menu à une fonction gestionnaire.Tant que votre application ne définit pas de fonctions gestionnaires pour les commandes du presse-papiers dans le menu Edition, elles restent désactivées.Pour écrire des fonctions gestionnaires pour les Commandes couper et copier, implémentez la sélection dans votre application.Pour écrire une fonction gestionnaire pour la commande de collage, interrogez le presse-papiers pour voir s'il contient les données dans un format que votre application peut recevoir.Par exemple, pour activer la Commande de copie, vous pouvez écrire un gestionnaire semblable à la suivante :

void CMyListView::OnEditCopy()
{
   if ( !OpenClipboard() )
   {
      AfxMessageBox( _T("Cannot open the Clipboard") );
      return;
   }
   // Remove the current Clipboard contents
   if( !EmptyClipboard() )
   {
      AfxMessageBox( _T("Cannot empty the Clipboard") );
      return;
   }
   // Get the currently selected data
   HGLOBAL hGlob = GlobalAlloc(GMEM_FIXED, 64);
   strcpy_s((char*)hGlob, 64, "Current selection\r\n");
   // For the appropriate data formats...
   if ( ::SetClipboardData( CF_TEXT, hGlob ) == NULL )
   {
      CString msg;
      msg.Format(_T("Unable to set Clipboard data, error: %d"), GetLastError());
      AfxMessageBox( msg );
      CloseClipboard();
      GlobalFree(hGlob);
      return;
   }
   CloseClipboard();
}

Les commandes couper, copier, et de collage sont uniquement explicites dans certains contextes.Les Commandes couper et copier doivent être vérifiées que si un élément est sélectionné, et la commande de collage uniquement lorsqu'un élément est dans le presse-papiers.Vous pouvez fournir ce comportement en définissant les fonctions de gestionnaire de mise à jour qui activent ou désactivent ces commandes selon le contexte.Pour plus d'informations, consultez Procédure objets interface utilisateur de mise à jour.

La bibliothèque MFC fournit la prise en charge du presse-papiers de l'édition de texte avec les classes d' CEdit et d' CEditView .Les classes OLE simplifient également implémentant les opérations du presse-papiers qui impliquent de OLE éléments.Pour plus d'informations sur les classes OLE, consultez presse-papiers : À l'aide de le mécanisme de presse-papiers OLE.

Implémenter d'autres commandes de menu Edition, telles que undo (ID_EDIT_UNDO) et la rétablir (ID_EDIT_REDO), est également laisser à vous.Si votre application ne prend pas en charge ces commandes, vous pouvez facilement les supprimer à partir de votre fichier de ressources à l'aide de les éditeurs de ressources Visual C++.

Sur quels éléments souhaitez-vous obtenir des informations supplémentaires ?

Voir aussi

Concepts

Presse-papiers