Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функции работы с буфером обменаСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте Буфер обмена в операционной системе — это непросто выделяемая операционной системой память для обмена данными, а совокупность специальных областей данных ("корзин"), имеющих указатели (дескрипторы) на информацию, хранящуюся в специальном формате. Буфер обмена поддерживает некоторое количество предопределенных форматов для хранения информации различных типов, таких как графика и текст, хотя любое приложение может определять свой собственный формат. Предопределенные форматы распознаются функциями GetClipboardData И Setciipboardoata. Для помещения информации в буфер приложение сначала должно открыть его функцией OpenClipboard, затем предварительно очистить буфер функцией EmptyClipboard, которая удаляет всю информацию из буфера в любом формате и назначает буфер конкретному окну, передавая параметр hWndNewOwner, установленный в функции Openclipboard. Затем приложение вызывает функцию SetClipboardData, передавая ей флаг, указывающий формат данных, и указатель на сами данные. Функция CloseClipboard закрывает буфер и завершает работу с ним. Приложение может получить данные из буфера с помощью функции GetClipboardData, передавая ей флаг формата запрашиваемых данных. Если данные в буфере существуют в запрашиваемом формате, то будет возвращен указатель на них. При помещении приложением данных в буфер желательно, чтобы они находились там во всех возможных форматах. Это нужно, чтобы наибольшее количество приложений могло ими воспользоваться. Например, если текстовый процессор поместит данные в буфер только в собственном формате, то они будут доступны только запущенным экземплярам этого процессора. Если этот процессор поместит данные в буфер дополнительно к собственному формату еще и в форматах cf_text и cf_unicodetext, то эти данные будут доступны другим Windows-приложениям, таким как Блокнот или MS Word. Windows обеспечивает автоматическое преобразование различных предопределенных форматов один в другой. В табл. 2 показаны наименования форматов, их возможные варианты конвертирования и поддержка различными версиями операционной системы Windows.
Таблица 2
В табл. 3 приведены системные функции для работы с буфером обмена. Таблица 3
Используя функции работы с буфером обмена, можно, например, определить поддерживаемые форматы буфера обмена его текущего владельца.
Пример. Определение текущего формата буфера обмена procedure TForml.TimerlTimer(Sender: TObject); Const {массив, содержащий все предопределенные имена форматов буфера обмена} PredefinedClipboardNames: array [1..17] of string = ('CF TEXT', 'CF BITMAP’, ‘CF_METAFILEPICT’, 'CF_SYLK', 'CF_DIF’ ‘CF_TIFF', 'CF_OEMTEXT', 'CF_DIB', 'CF_PALETTE’, 'CF_PENDATA’ 'CF_RIFF’ ‘CF_WAVE', 'CF_UNICODETEXT', 'CF_ENHMETAFILE', 'CF_HDROP', 'CF_LOCALE', 'CF_MAX'); Var FormatID: UINT; {для ID-формата буфера обмена} FormatName: array [0..255] of char; {для имени формата буфера обмена} Len: Integer; {для длины формата буфера обмена} Begin {очищаем окно вывода} ListBoxl.Items.Clear; {подсчитываем и выводим количество форматов, поддерживаемых текущим владельцем буфера обмена} Labell.Caption:= 'Всего форматов доступно: '+IntToStr(CountClipboardFormats); {открываем буфер обмена} OpenClipboard(0); {пытаемся считать первый из доступных форматов} FormatID:= EnumClipboardFormats(0); {пытаемся считать остальные форматы} while (FormatID<>0) do Begin {получаем имя формата буфера обмена; при этом будет возвращено имя зарегистрированного, а не предопределенного формата} Len:= GetClipboardFormatName (FormatID, FormatName,255); {если длина равна нулю, то это предопределенный формат} if Len = 0 then ListBoxl.Items.Add(PredefinedClipboardNames[FormatID]+ ‘(Предопределенный)'+ '[' + IntToStr(FormatID)+ ']') Else {иначе это зарегистрированное имя формата} ListBoxl.Items.Add(FormatName+' [' + IntToStr(FormatID) + ‘]’); {получаем ID следующего формата буфера обмена} FormatID:=EnumClipboardFormats(FormatID); end; {обязательно закрываем буфер} CloseClipboard; end;
Задание для выполнения к части 3 лабораторной работы Для приведенного примера изучите текст основной процедуры, разработайте форму и выполните соответствующее приложение.
Содержание отчета по лабораторной работе Требования к содержанию отчета соответствуют требованиям к отчету в лабораторной работе № 1. Лабораторная работа № 4
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2017-02-06; просмотров: 711; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.20 (0.009 с.) |