Работа с буфером обмена (clipboard)
Страница 7. Функция EnumClipboardFormats



Функция EnumClipboardFormats:

Данная функция позволяет перечислять форматы данных, которые являются в настоящее время доступными в буфере обмена. Чтобы выполнить перечисление всех форматов данных буфера обмена необходимо произвести ряд обращений к этой функции. Для каждого обращения, параметр формата определяет доступный формат буфера обмена, а функция возвращает значение следующего доступного формата буфера обмена.

UINT EnumClipboardFormats
(
    UINT format     // Определяет известный доступный формат буфера обмена
);

В качестве входного параметра данная функция принимает идентификатор формата данных буфера обмена. format - определяет формат буфера обмена, о котором известно, что он является доступным. Для того чтобы начать перечисление форматов буфера обмена, нужно установить format в 0, тогда функция возвращает первый доступный формат буфера обмена. При последующих вызовах, во время перечисления, в format устанавливается результат предыдущего обращения к EnumClipboardFormat.

В случае успешного завершения, возвращаемое значение - формат буфера обмена, который следует за заданным форматом, иными словами, следующий доступный формат буфера обмена. В случае завершения с ошибкой, возвращаемое значение 0. Чтобы получить дополнительные данные об ошибке, вызовите функцию GetLastError. Следует отметить, что если буфер обмена не открыт, функция завершается с ошибкой.

При перечислении форматов данных следует помнить, что если больше нет форматов буфера обмена, при вызове данной функции, возвращаемое значение будет равно 0. Однако, функция GetLastError возвращает значение NO_ERROR. Это позволяет делать различие между завершением с ошибкой и концом операции перечисления.

Следует отметить, что перед перечислением форматов буфера обмена, необходимо открыть его. Чтобы открыть буфер обмена, используйте функцию OpenClipboard. Данная функция перечисляет форматы по порядку, как они были помещены в буфер обмена.

Важно и то, что для некоторых форматов буфера обмена, операционная система обеспечивает автоматическое преобразование форматов. В таком случае, эта функция перечисляет заданный формат, затем перечисляет форматы, в которые он может быть преобразован.

Небольшой пример использования данной функции, чтобы наглядно показать все описанное выше:

if (OpenClipboard()) 
{
   UINT uFormat = EnumClipboardFormats(0); //получаем первый доступный
 
    while (uFormat) 
    { 
        //тут можно что-либо делать
        ...
  
        uFormat = EnumClipboardFormats(uFormat); //берем следующий формат
    } 
    CloseClipboard(); 
}

 
« Предыдущая статья   Следующая статья »