В Windows предусмотрен специальный механизм обмена данными между разными приложениями, называемый буфер обмена (clipboard). Буфер обмена представляет собой буфер, в который могут быть помещены данные каким-либо приложением. Все остальные приложения Windows могут прочитать эти данные или разместить в этом буфере свои.
Для того, что бы не возникало путаницы при использовании буфера обмена, Windows предполагает применение определенных форматов данных, размещаемых в буфере.
В некоторых случаях бывает удобно просмотреть данные, размещенные в буфере обмена – для этих целей Windows содержит специальную программу просмотра содержимого буфера обмена, (Clipboard Viewer). Не надо смешивать между собой сам буфер обмена и программу его просмотра. Буфер обмена реализован несколькими функциями Windows и специальными данными.
При рассмотрении буфера обмена нам надо будет рассмотреть три вопроса:
1) как можно самим класть или читать данные из буфера обмена
Возможно вы искали - Курсовая работа: Обмін даними між програмами Office
2) как можно использовать буфер обмена со стандартным окном–редактором
3) как написать собственную программу просмотра содержимого буфера обмена.
Предварительно мы разберемся с некоторыми основными понятиями, связанными с применением буфера обмена.
Как мы уже сказали, Windows предполагает использование определенных форматов данных для передачи через буфер обмена. Конечно, у Вас есть возможность передавать данные в собственном формате, только для использования собственным приложением, однако рекомендуется придерживаться общепринятых стандартов, так как возможность передачи данных между самыми разнообразными приложениями является очень удобной.
Каждому применяемому формату данных буфера обмена в Windows поставлен в соответствие определенный номер. Windows определяет несколько стандартных форматов и предоставляет для них определенные символические имена:
Похожий материал - Научная работа: Обобщение моделей данных в создании ИС
CF_TEXT соответствует ASCIIZ тексту
CF_BITMAP обычный битмап
CF_DIB битмап, независящий от устройства
CF_PALETTE палитра (обычно применяется вместе с CF_DIB)
CF_METAFILEPICT метафайл
Очень интересно - Курсовая работа: Обработка данных в автоматизированных системах
При отображении данных этих форматов в программе просмотра буфера обмена не возникает никаких проблем, так как Windows содержит все необходимые средства для отображения этих данных. Однако Вы можете класть в буфер обмена данные в собственном формате. Если Вы хотите, что бы их отображала стандартная программа просмотра, то Вы должны их объявить как
CF_OWNERDISPLAY данные, отображаемые пользователем
В этом случае программа просмотра будет посылать специальные сообщения Вашему окну для отображения этих данных в окне.
Несколько дополнительных форматов, являясь обычными форматами данных, имеют отличные от них номера. В символических именах таких данных присутствует аббревиатура ‘DSP’
CF_DSPTEXT соответствует ASCIIZ тексту
Вам будет интересно - Контрольная работа: Обработка данных в табличной форме средствами MS Office
CF_DSPBITMAP обычный битмап
CF_DSPMETAFILEPICT метафайл
данные этих форматов отображаются в программе просмотра как данные соответствующих форматов, но обычно не используются другими приложениями, кроме Вашего.
Помимо рассмотренных, Windows дополнительно определяет большое количество других стандартных форматов данных, однако они используются сравнительно редко. В большинстве случаев это специфические форматы данных разных популярных программ, которые было решено включить в стандарт Windows.
При необходимости использования собственного формата данных для буфера обмена надо получить номер этого формата. Для того, что бы избежать возможных накладок, Вы должны зарегистрировать Ваш формат данных с помощью функции
Похожий материал - Курсовая работа: Обработка информации и принятие решения в системах ближней локации
UINT RegisterClipboardFormat( lpszFormatName );
для уже зарегистрированного формата Вы можете узнать его имя:
int GetClipboardFormatName( nFormat, lpsBuffer, nMaxCount );
Буфер обмена содержит не более одного блока данных каждого формата, причем все данные, находящиеся в буфере должны быть положены одним окном. Так как данные, передаваемые в буфер обмена, должны быть доступны всем приложениям, то для их передачи используются только блоки глобальной памяти.