Объекты и источники данных. Манипуляция
После объекта источника данных или данных создает можно выполнить ряд общих операций с данными, например вставка и удаление данных укажите, какие форматы данных в и т д В этом разделе описываются методы, необходимые выполнять наиболее распространенные операции. Ниже приведен список разделов.
Вставка данных в источник данных
Определение форматы, доступные в объекте данных
Извлечь данные из объекта данных
Вставка данных в источник данных
Способ вставки данных в источник данных зависит от того, задан ли данные немедленно или по требованию, и в ней указываются, носитель. Возможности следующим образом.
Предоставление данных немедленно (немедленная отрисовка)
Вызов 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 в источнике данных.
Пользователь может теперь вставки данных в документе так же, как и для любых других данных в том же формате.