Основы программирования в Win32API. Марапулец Ю.В. - 84 стр.

UptoLike

Составители: 

возвращаются сведения о других форматах. Таким образом, для получения спи-
ска форматов можно воспользоваться следующим алгоритмом:
wFormat = NULL;
OpenClipboard(hwnd);
while(wFormat = EnumClipboardFormats(wFormat))
{
... код обработки различных форматов ...
}
CloseClipboard();…
В этом списке используемые форматы будут перечислены в том порядке,
в котором исходное приложение записывало в буфер обмена соответствующие
данные. Это позволит запрашивающему приложению найти первый подходя-
щий для себя формат. Исходное приложение может записывать данные в лю-
бом другом заданном порядке, например в порядке убывания степени надеж-
ности данных.
Если список форматов исчерпан, буфер обмена пуст или если он не был
открыт, результат выполнения функции EnumClipboardFormats() будет равен
нулю. Параметру wFormat можно присвоить некоторое значение, с тем чтобы
повторно прочитать список, начиная с используемого в данный момент фор-
мата. Кроме того, информацию о количестве форматов данных, находящихся
в буфере обмена, можно получить с помощью оператора:
nFormats = CountClipboardFormats();…
Когда приложение установит, что буфер обмена содержит данные нужно-
го типа, процесс чтения этих данных будет состоять из двух этапов:
получение дескриптора блока памяти, соответствующего данным, ко-
торые находятся в буфере обмена;
выполнение определенных операций с данными с использованием
имеющегося дескриптора.
Первый этап выполнить очень просто с помощью функции RerieveCB:
{
HANDLE hCB;
if(! IsClipboardFormatAvailable(FormatCB)) return(NULL);…
OpenClipboard( hwnd ); hCB = GetClipboardData( FormatCB );
CloseClipboard();
return( hCB );
}…
Содержащаяся в этом фрагменте кода обобщенная процедура возвращает
нетипизированный дескриптор блока памяти, который соответствует данным,
находящимся в буфере обмена. Если запрашиваемый формат данных отсутст-
вует, функция возвращает значение NULL.
Следует отметить, что на операции, которые могут выполняться с буфе-
ром обмена, налагается несколько ограничений:
84
возвращаются сведения о других форматах. Таким образом, для получения спи-
ска форматов можно воспользоваться следующим алгоритмом:
     wFormat = NULL;
     OpenClipboard(hwnd);
     while(wFormat = EnumClipboardFormats(wFormat))
     {
            ... код обработки различных форматов ...
     }
     CloseClipboard();…
     В этом списке используемые форматы будут перечислены в том порядке,
в котором исходное приложение записывало в буфер обмена соответствующие
данные. Это позволит запрашивающему приложению найти первый подходя-
щий для себя формат. Исходное приложение может записывать данные в лю-
бом другом заданном порядке, например в порядке убывания степени надеж-
ности данных.
     Если список форматов исчерпан, буфер обмена пуст или если он не был
открыт, результат выполнения функции EnumClipboardFormats() будет равен
нулю. Параметру wFormat можно присвоить некоторое значение, с тем чтобы
повторно прочитать список, начиная с используемого в данный момент фор-
мата. Кроме того, информацию о количестве форматов данных, находящихся
в буфере обмена, можно получить с помощью оператора:
     nFormats = CountClipboardFormats();…
     Когда приложение установит, что буфер обмена содержит данные нужно-
го типа, процесс чтения этих данных будет состоять из двух этапов:
     – получение дескриптора блока памяти, соответствующего данным, ко-
торые находятся в буфере обмена;
     – выполнение определенных операций с данными с использованием
имеющегося дескриптора.
     Первый этап выполнить очень просто с помощью функции RerieveCB:
{
     HANDLE hCB;
     if(! IsClipboardFormatAvailable(FormatCB)) return(NULL);…
     OpenClipboard( hwnd ); hCB = GetClipboardData( FormatCB );
     CloseClipboard();
     return( hCB );
}…
     Содержащаяся в этом фрагменте кода обобщенная процедура возвращает
нетипизированный дескриптор блока памяти, который соответствует данным,
находящимся в буфере обмена. Если запрашиваемый формат данных отсутст-
вует, функция возвращает значение NULL.
     Следует отметить, что на операции, которые могут выполняться с буфе-
ром обмена, налагается несколько ограничений:

                                     84