Буфер обмена. Копирование и вставка данных
В этом разделе описывается минимальный объем, необходимый для ввод скопировать и вставить из буфера обмена в приложении OLE. Рекомендуется чтении разделов Объекты данных и источники данных OLE () перед продолжением.
Прежде чем можно реализовать или скопировать или вставящ, необходимо предоставить функции для обработки копию, параметры вырежете и вставлять в меню " Правка ".
Копирование или вырежущ данные
Копировать данные в буфер обмена
Определить, является ли скопировать данные собственный данные или внедренный или связанные элементы.
Если встроенный или связанный данные, получите указатель на объект COleClientItem, который был выбран.
Если данные собственен и приложение сервера, необходимо создать новый объект, производный от COleServerItem, содержащий выбранные данные. В противном случае создайте объект COleDataSource для данных.
Вызовите функцию-член CopyToClipboard выбранного элемента.
Если пользователь выбрал операции вырезания, копирования, удалите выбранные данные из приложения.
Чтобы просмотреть пример такой последовательности см. в описании функций OnEditCut и OnEditCopy в примерах программы OCLIENT и HIERSVR MFC OLE. Обратите внимание, что эти примеры поддерживают указатель на данный момент выборочным данным, поэтому шаг 1 уже завершен.
Вставить данные
Вставить данные осложнятьле, чем копирование ее, так как в этом случае необходимо использовать формат для использования в вставить данные в приложение.
Вставьте данные из буфера обмена
В представлении по класс реализует интерфейс OnEditPaste, для обработки пользователи выбирая параметр " из меню " Правка ".
В функции OnEditPaste создайте объект COleDataObject и вызовите функцию-член AttachClipboard, чтобы связать этот объект в данные в буфер обмена.
Вызовите COleDataObject::IsDataAvailable для проверки, является ли указанный формат доступен.
Кроме того, можно использовать COleDataObject::BeginEnumFormats искать другие форматы до тех пор, пока не найдете одно большую часть одетое в приложение.
Запустите вставить формата.
Пример того, как это работает, в разделе реализация функции-члены OnEditPaste в классах представления, определенных в примерах программы OCLIENT и HIERSVR MFC OLE.
Совет
Основные преимущества разделения операцию вставлять в собственную функцию, один и тот же код " может использоваться, если данные удален в приложении во время операции перетаскивания.Как и в OCLIENT HIERSVR, чтобы функциональность OnDrop может также вызывать DoPasteItem, повторного использования кода, написанного для реализации операции ".
Для обработки параметра для вставки в меню " Правка " см. в разделе Диалоговые окна в OLE.