Окно добавляет себя к цепочке окон просмотра буфера обмена при помощи вызова функции SetClipboardViewer. Возвращаемое значение - дескриптор следующего окна в цепочке. Чтобы извлечь дескриптор первого окна в цепочке, вызовите функцию GetClipboardViewer.
Каждое окно просмотрщика буфера обмена должно следить за следующим окном в цепочке окон просмотра. Когда содержание буфера обмена изменяется, то система отправляет сообщение WM_DRAWCLIPBOARD первому окну в цепочке. После модификации его вывода на экран, каждое окно просмотра буфера обмена должно передать это сообщение в следующее окно в цепочке.
Перед закрытием, окно просмотра буфера обмена должно удаляться из цепочки окон просмотра при помощи вызова функции ChangeClipboardChain. Тогда система отправляет первому окну в цепочке сообщение WM_CHANGECBCHAIN.
За подробной информацией об обработке сообщений WM_DRAWCLIPBOARD и WM_CHANGECBCHAIN , обратитесь к статье Создание окна просмотра буфера обмена.