880 Часть V. Инструментарий программиста

Системные курсоры

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

h08801.jpg

Константа Вид курсора

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 исходный код оказывается короче примерно в три раза. Рассмотрим подробнее оба подхода в задачах программирования курсоров.