Поделиться через


Буфер обмена. Копирование и вставка данных

В этом разделе описывается минимальная работа, необходимая для реализации копирования в буфер обмена и вставки из буфера обмена в приложении OLE. Прежде чем продолжить, рекомендуется прочитать разделы "Объекты данных и источники данных" (OLE ).

Прежде чем реализовать копирование или вставку, необходимо сначала предоставить функции для обработки параметров копирования, вырезания и вставки в меню "Изменить".

Копирование или удаление данных

Копирование данных в буфер обмена

  1. Определите, являются ли копируемые данные собственными или внедренными или связанными элементами.

    • Если данные внедрены или связаны, получите указатель на выбранный COleClientItem объект.

    • Если данные являются собственными, а приложение является сервером, создайте новый объект, производный от COleServerItem содержащих выбранные данные. В противном случае создайте COleDataSource объект для данных.

  2. Вызовите функцию-член выбранного CopyToClipboard элемента.

  3. Если пользователь выбрал операцию вырезания вместо операции копирования, удалите выбранные данные из приложения.

Пример этой последовательности см OnEditCutOnEditCopy . в примерах программ OCLIENT и HIERSVR в MFC. Обратите внимание, что эти примеры поддерживают указатель на выбранные в данный момент данные, поэтому шаг 1 уже завершен.

Вставка данных

Вставка данных сложнее, чем копирование, так как необходимо выбрать формат для вставки данных в приложение.

Вставка данных из буфера обмена

  1. В классе представления реализуйте для OnEditPaste обработки пользователей, выбрав параметр "Вставить" в меню "Изменить".

  2. OnEditPaste В функции создайте объект и вызовите COleDataObject ее AttachClipboard функцию-член, чтобы связать этот объект с данными в буфере обмена.

  3. Вызовите COleDataObject::IsDataAvailable проверка, доступен ли определенный формат.

    Кроме того, вы можете искать COleDataObject::BeginEnumFormats другие форматы, пока не найдете наиболее подходящий для приложения.

  4. Выполните вставку формата.

Пример работы см. в реализации OnEditPaste функций-членов в классах представления, определенных в примерах программ OCLIENT и HIERSVR MFC.

Совет

Основное преимущество разделения операции вставки на собственную функцию заключается в том, что тот же код вставки можно использовать при удалении данных в приложении во время операции перетаскивания. Как и в OCLIENT и HIERSVR, функция OnDrop также может вызываться DoPasteItemповторно, повторно применяя код, написанный для реализации операций вставки.

Чтобы обработать параметр "Вставить специальные" в меню "Изменить", см. диалоговое окно раздела в OLE.

Что вы хотите узнать больше о

См. также

Буфер обмена. Использование механизма буфера обмена OLE