При размещении формата в буфере обмена, окно может отложить предоставление данных в этом формате до тех пор, пока данные не станут необходимы. Чтобы сделать так, приложение может установить для параметра hData функции SetClipboardData значение ПУСТО (NULL). Это полезно, если приложение поддерживает несколько форматов буфера обмена, некоторые, или все из которых занимают много времени, чтобы представить данные. Передавая дескриптор равным ПУСТО (NULL), окно предоставляет комплекс форматов буферов обмена только тогда, когда и если они необходимы.
Если владелец буфера обмена разрушается и задержал представление некоторыми или всеми форматами буфера обмена, он получает сообщение WM_RENDERALLFORMATS. После приема этого сообщения, окно должно поместить допустимые дескрипторы блоков памяти в буфер обмена для всех форматов буфера обмена, которые оно предоставляет. Это гарантирует то, что эти форматы остаются доступным и после того, как владелец буфера обмена разрушается.
Приложение не должно открывать буфер обмена перед вызовом функции SetClipboardData в ответ на сообщение WM_RENDERFORMAT или WM_RENDERALLFORMATS.
Любые форматы буфера обмена, которыми не формируются данные в ответ на сообщение WM_RENDERALLFORMATS, прекращают быть доступными другим приложениям и больше не перечисляются функциями буфера обмена.