На этом шаге мы рассмотрим общие принципы работы с буфером обмена.
В Windows предусмотрено несколько способов совместного использования данных разными приложениями, причем каждое из них имеет различный уровень сложности. Способы совместного использования данных включают следующее:
DDE и OLE требуют, чтобы приложения обрабатывали не только сообщения Windows, но также и сообщения, приходящие от других приложений. Передача сообщений и ответы на них могут стать довольно сложными. Библиотеки динамической компоновки, с которыми вы познакомитесь в следующих шагах, также могут представлять серьезное затруднение при составлении программ.
С другой стороны, буфер обмена обеспечивает простой механизм передачи данных между приложениями. Несмотря на ограничения в некоторых отношениях, буфер обмена все же обеспечивает значительную гибкость, допуская быстрый обмен между программами не только текстами, но даже растровыми изображениями, метафайлами, данными электронных таблиц, TIF-файлами, палитрами цветов и данными в форматах, задаваемых пользователем (или частных).
В следующих шагах вы познакомитесь с тем, как использовать ObjectWindows для копирования данных в буфер обмена Clipboard, a также как извлекать данные, которые туда поместили другие приложения.
Чтобы использовать буфер, программе нужен способ поместить информацию в буфер, извлечь ее из буфера и определить тот тип информации, который хранится в буфере. В традиционных приложениях реальная программа создает буфер и определяет, как с ним обращаться.
Крупное различие между буфером обмена Clipboard и другими буферами состоит в том, что он не исчезает после завершения выполнения программы. Более того, сама Windows, а не приложение, определяет с помощью набора заранее заданных правил, как надо обращаться с буфером. Эти правила представлены группой функций и сообщений. Обычно, чтобы получить доступ к буферу обмена, программа должна вызвать функции Windows API. Однако те, кто программирует на Borland C++, для решения такой задачи могут обратиться к OWL-классу TClipboard.
На следующем шаге мы рассмотрим форматы данных буфера обмена.