Объекты данных и источников данных: Управление
После объекта данных или источника данных создает можно выполнять несколько общих операций на основе наборов данных, например вставка и удаление данных, перечисляя форматы данные и т дДанный раздел описывает методы, необходимые для выполнения наиболее распространенные операции.Ниже приведен список разделов.
Вставка данных в источник данных
Указание форматов, доступные в объекте данных
Получение данных из объекта данных
Вставка данных в источник данных
Как данные вставляются в источник данных, зависит от того, указаны ли данные немедленно или по требованию, и, в которую предоставляют среду передачи им.Возможности следующим образом.
, Предоставляющего данные немедленно (быстрая отрисовка)
Вызов COleDataSource::CacheGlobalData повторно для каждого формата буфера обмена в котором указываются данные.Передайте формат буфера обмена, дескриптор памяти, содержащий данные и, при необходимости, структуру FORMATETC, описывающий данные.
-или-
Если требуется работать непосредственно со структурами STGMEDIUM, вызовите COleDataSource::CacheData вместо COleDataSource::CacheGlobalData в параметре выше.
Передача данных по требованию (отложенной обработки)
Это дополнительный шаг.
Вызов COleDataSource::DelayRenderData повторно для каждого формата буфера обмена в котором указываются данные.Передайте формат буфера обмена для использования и, при необходимости, структуру FORMATETC, описывающий данные.При запросе данных вызовет COleDataSource::OnRenderData платформы, которое необходимо переопределить.
-или-
Если используется объект CFile для поставки данных, вызовите COleDataSource::DelayRenderFileData вместо COleDataSource::DelayRenderData в предыдущем параметре.При запросе данных вызовет COleDataSource::OnRenderFileData платформы, которое необходимо переопределить.
Указание форматов, доступные в объекте данных
Прежде, чем приложение позволяет пользователю вставлять данные в него, необходимо выяснить, является ли форматы в буфере обмена, он может обработать.Чтобы сделать это, приложение должно выполнить следующие действия:
Создайте объект COleDataObject и структура FORMATETC.
Вызовите функцию-член объекта AttachClipboard данных, чтобы связать объект данных с данными в буфере обмена.
Выполните одно из следующих действий.
Вызовите функцию-член объекта IsDataAvailable данных, если только одна или две формат, необходимо.Это экономит время необходимо в тех случаях, когда данные в буфере обмена поддерживают значительно больше форматов чем приложение.
-или-
Вызовите функцию-член объекта BeginEnumFormats данных, чтобы начать перечисление форматов, доступные в буфере обмена.Затем будет вызывать GetNextFormat до буфера обмена возвращает формат приложение поддерживает или больше нет доступных форматов.
При использовании ON_UPDATE_COMMAND_UI, то теперь можно позволить вставить и, возможно, чтобы вставить специальные элементы в меню Правка.Для этого вызовите или CMenu::EnableMenuItem или CCmdUI::Enable.Дополнительные сведения о назначении приложение-контейнеры должны делать с точками меню и когда см. в разделе Меню и ресурсы. Добавление контейнера.
Извлечение данных из объекта данных
Как только решали в формате данных, все, что остается извлечь данные из объекта данных.Для этого пользователь решает, куда поместить данные, и приложение вызывает соответствующую функцию.Данные будут доступны в одной из следующих сред передачи:
Средний |
Функция, вызываемая |
---|---|
Глобальная память (HGLOBAL) |
COleDataObject::GetGlobalData |
Файл (CFile) |
COleDataObject::GetFileData |
Структура STGMEDIUM (IStorage) |
COleDataObject::GetData |
Обычно среда передачи определена вместе с форматом буфера обмена.Например, объект CF_EMBEDDEDSTRUCT всегда среду передачи IStorage, которая требует структуры STGMEDIUM.Поэтому следует использовать GetData, так как это единственное одну из этих функций, которые могут принимать структуру STGMEDIUM.
В случаях, когда формат буфера обмена в этой среде передачи IStream или HGLOBAL платформа могут предоставить указатель CFile, который ссылается на данные.Затем приложение может использовать файл, считанные, что получил данные точно так же, как он может импортировать данные из файла.По существу, это клиентский интерфейс для подпрограммам OnRenderData и OnRenderFileData в источнике данных.
Пользователь может вставить данные в документ как и для всех остальных данные в том же формате.