Чтобы поместить информацию в буфер обмена, окно сначала очищает его от любого предыдущего содержания при помощи использования функции EmptyClipboard. Эта функция отправляет сообщение WM_DESTROYCLIPBOARD предыдущему владельцу буфера, освобождает ресурсы, связанные с данными в буфере обмена и назначает монопольное использование его окну, которое имеет открытый буфер обмена. Чтобы узнать, какое окно владеет буфером обмена, вызывается функция GetClipboardOwner.
После освобождения буфера обмена, окно помещает данные в этот буфер в стольких форматах, сколько это возможно, которые располагаются от самого богатого до самого бедного описателями формата буфера обмена. Для каждого формата, окно вызывает функцию SetClipboardData, устанавливая идентификатор формата и глобальный дескриптор памяти. Дескриптор выделенного блока памяти может иметь значение ПУСТО (NULL), обозначая, что окно формирует данные по запросу. За подробной информацией, обратитесь к статье Отложенное предоставление данных.