Составители:
ется в виде глобального блока памяти, начинающегося с заголовка BITMAPINFO, после 
которого следуют данные изображения.  
Передав  растровое  изображение  в  буфер  обмена,  исходное  приложение  не  имеет 
возможности  обратиться  к  соответствующему  глобальному  блоку  памяти,  не  запросив 
доступ к буферу обмена. 
Форматы палитры и пера. Форматы CF_PALETTE и CF_PENDATA служат для 
передачи в буфер обмена дескриптора цветовой палитры и дескриптора пера соответст-
венно.  Формат CF_PALETTE часто  применяется  в  сочетании  с  форматом CF_DIB для 
записи цветовой палитры, используемой растровым изображением. 
Wave-формат. Формат CF_WAVE предназначен для передачи между различными 
приложениями аудиоинформации. 
Форматы  специального  назначения.  Три  следующих  формата  изначально  пред-
назначались для применения в специализированных приложениях. 
•  Формат CF_TIFF используется для передачи данных в формате TIFF (Tagged Image 
File Format).  
•  Формат CF_DIF  служит для передачи данных  в  формате DIF (Data Interchange For-
mat), который был предложен фирмой Software Arts и первоначально применялся в 
редакторе  электронных  таблиц VisiCalc. Теперь  лицензия  на  данный  формат  при-
надлежит фирме Lotus. DIF-формат основан  на ASCII-строках, завершающихся па-
рой символов CR/LF (возврат каретки/перевод строки). 
•  Формат CF_SYLK предназначен для передачи данных в формате Microsoft Symbolic 
Link,  который  первоначально  применялся  для  обмена  данных  между Microsoft-
приложениями Multiplan (электронные  таблицы), Chart и Excel. Этот формат  осно-
ван  на ASCII-строках,  завершающихся  парой  символов CR/LF (возврат  карет-
ки/перевод строки). 
8.1.2. Операции с буфером обмена 
Управление глобальными блоками памяти, которые содержат данные, помещенные 
в буфер обмена, осуществляется с помощью флагов выделения памяти. При записи ин-
формации в буфер программа выделяет блок памяти с помощью функции GlobalAlloc() 
и флага GHND (определенного как GMEM_MOVABLE | GMEM_ZEROINIT). 
Обычно при закрытии исходного приложения выделенная ему глобальная область 
памяти  удаляется (освобождается) операционной  системой.  Но  если  приложение  вызо-
вет  функцию SetClipboardData() с  указанием  дескриптора  глобального  блока  памяти, 
Windows возьмет этот блок в свою собственность, а точнее, в собственность буфера об-
мена, изменив флаги выделения. 
Принадлежность глобального блока памяти назначается функцией GlobalRealloc(): 
GlobalRealloc( hMem, NULL, GMEM_MODIFY | GMEM_DDESHARE ); 
После этого  вызова выделенный блок памяти исходному  приложению не принад-
лежит и доступен только  через буфер обмена, с помощью функции GetClipboardData(). 
Эта  функция  предоставляет  вызвавшему  ее  приложению  временный  доступ  к  данным, 
записанным в буфере обмена, передавая программе дескриптор глобального блока памя-
ти. Однако принадлежность блока данных по-прежнему сохраняется за буфером обмена, 
а не передается приложению. 
Следовательно, данные, записанные в буфере обмена, могут быть удалены только 
путем вызова функции EmptyClipboard.  
167
ется в виде глобального блока памяти, начинающегося с заголовка BITMAPINFO, после
которого следуют данные изображения.
      Передав растровое изображение в буфер обмена, исходное приложение не имеет
возможности обратиться к соответствующему глобальному блоку памяти, не запросив
доступ к буферу обмена.
      Форматы палитры и пера. Форматы CF_PALETTE и CF_PENDATA служат для
передачи в буфер обмена дескриптора цветовой палитры и дескриптора пера соответст-
венно. Формат CF_PALETTE часто применяется в сочетании с форматом CF_DIB для
записи цветовой палитры, используемой растровым изображением.
      Wave-формат. Формат CF_WAVE предназначен для передачи между различными
приложениями аудиоинформации.
      Форматы специального назначения. Три следующих формата изначально пред-
назначались для применения в специализированных приложениях.
 • Формат CF_TIFF используется для передачи данных в формате TIFF (Tagged Image
    File Format).
 • Формат CF_DIF служит для передачи данных в формате DIF (Data Interchange For-
    mat), который был предложен фирмой Software Arts и первоначально применялся в
    редакторе электронных таблиц VisiCalc. Теперь лицензия на данный формат при-
    надлежит фирме Lotus. DIF-формат основан на ASCII-строках, завершающихся па-
    рой символов CR/LF (возврат каретки/перевод строки).
 • Формат CF_SYLK предназначен для передачи данных в формате Microsoft Symbolic
    Link, который первоначально применялся для обмена данных между Microsoft-
    приложениями Multiplan (электронные таблицы), Chart и Excel. Этот формат осно-
    ван на ASCII-строках, завершающихся парой символов CR/LF (возврат карет-
    ки/перевод строки).
     8.1.2. Операции с буфером обмена
     Управление глобальными блоками памяти, которые содержат данные, помещенные
в буфер обмена, осуществляется с помощью флагов выделения памяти. При записи ин-
формации в буфер программа выделяет блок памяти с помощью функции GlobalAlloc()
и флага GHND (определенного как GMEM_MOVABLE | GMEM_ZEROINIT).
     Обычно при закрытии исходного приложения выделенная ему глобальная область
памяти удаляется (освобождается) операционной системой. Но если приложение вызо-
вет функцию SetClipboardData() с указанием дескриптора глобального блока памяти,
Windows возьмет этот блок в свою собственность, а точнее, в собственность буфера об-
мена, изменив флаги выделения.
     Принадлежность глобального блока памяти назначается функцией GlobalRealloc():
GlobalRealloc( hMem, NULL, GMEM_MODIFY | GMEM_DDESHARE );
      После этого вызова выделенный блок памяти исходному приложению не принад-
лежит и доступен только через буфер обмена, с помощью функции GetClipboardData().
Эта функция предоставляет вызвавшему ее приложению временный доступ к данным,
записанным в буфере обмена, передавая программе дескриптор глобального блока памя-
ти. Однако принадлежность блока данных по-прежнему сохраняется за буфером обмена,
а не передается приложению.
      Следовательно, данные, записанные в буфере обмена, могут быть удалены только
путем вызова функции EmptyClipboard.
                                        167
Страницы
- « первая
 - ‹ предыдущая
 - …
 - 163
 - 164
 - 165
 - 166
 - 167
 - …
 - следующая ›
 - последняя »
 
