880 Часть V. Инструментарий программиста
Системные курсоры
Windows API предлагает не слишком богатый выбор стандартных курсоров. Среди них курсоры, используемые в наиболее широко известных программах, таких как текстовые редакторы, электронные таблицы и программы управления базами данных. В табл. 31.1 приводится список констант для курсоров, которые можно найти в справочной системе Windows API.
Константа Вид курсора
IDC_ARROW Стандартная стрелка
TDC_CROSS Перекрестье
IDC_IBEAM 1-образный (текстовый)
IDC_ICON Пустой значок
IDC_SIZE Два смещенных квадратика
IDC_SIZENEW Двунаправленная стрелка на северо-восток и юго-запад
IDC_SIZENS Двунаправленная стрелка на север и юг
IDC_SIZENWSE Двунаправленная стрелка на юго-восток и северо-запад
IDC_SIZEWE Двунаправленная стрелка на запад и восток
TDC_UPARROW Вертикальная стрелка
IDC_WAIT Песочные часы
Библиотека OWL и Windows API предоставляет для загрузки курсора две разные версии функции LoadCursor. Сейчас мы не станем вдаваться в подробности и рассматривать синтаксические различия между этими функциями. Какую форму функции LoadCursor использовать, зависит от опыта программиста и степени удобства при реализации. Имеется, однако, более существенная проблема выбора между подходами, которые предлагаются OWL и Windows API.
Проблема, о которой идет речь, известна как "захват ресурсов при инициализации" (resource acquisition is initialisation). Дело в том, что ресурсы не существуют в пустоте, они должны быть инициализированы и затем высвобождены. В том, что касается конструкторов и деструкторов, оба подхода совпадают. Интерфейс Windows API выглядит более соответствующим стилю языка С, а подход библиотеки OWL более объектно-ориентирован и, следовательно, имеет больше преимуществ при инициализации и использовании ресурсов. Кроме того, для библиотеки OWL исходный код оказывается короче примерно в три раза. Рассмотрим подробнее оба подхода в задачах программирования курсоров.