Чтение данных из Clipboard
Рассмотрим теперь процедуру чтения данных из Clipboard. Приложение должно сделать следующее.
Открыть Clipboard функцией OpenClipboard
Вызвать функцию GetClipboardData, передав ей через единственный параметр требуемый формат данных. Если Clipboard содержит данные в указанном формате, функция GetClipboardData возвратит идентификатор незафиксированного блока памяти, содержащего нужные данные. Если в Clipboard нет данных в указанном формате, будет возвращено значение NULL
Зафиксировать блок памяти, идентификатор которого получен от функции GetClipboardData, функцией GlobalLock
Переписать данные из зафиксированного буфера данных Clipboard в буфер, заказанный специально для этого приложением
Расфиксировать блок памяти, идентификатор которого получен от функции GetClipboardData, функцией GlobalUnlock
Закрыть Clipboard функцией CloseClipboard
Чтение содержимого Clipboard, как и запись в Clipboard, нужно выполнять в обработчике одного сообщения, руководствуясь рекомендациями, приведенными в предыдущем разделе.
Отметим также, что приложение должно переписать данные из блока памяти Clipboard в свой, созданный специально, а не пользоваться блоком памяти, идентификатор которого был получен от функции GetClipboardData. Причина очевидна - в любой момент времени пользователь может уничтожить этот блок памяти, перезаписав содержимое Clipboard новыми данными.