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

Значки используются во многих операционных системах с графическим интерфейсом пользователя — не только в Windows. С помощью картинки-значка можно легко представить некоторое понятие, которое трудно было бы описать и десятком слов. Это очень важный момент, если иметь в виду ограниченное пространство экрана монитора. В настоящем разделе демонстрируется, как добавлять значки в приложения для Windows.

Без использования Windows API или Borland OWL, вывод значков был бы очень трудоемким занятием. Непосредственное программирование значков требует знания алгоритмов сжатия и обработки графических массивов, детального знакомства с видеоадаптерами и видеорежимами. Существует множество книг, посвященных вопросам сжатия и обработки изображений, но OWL и Windows API очень упрощают эту задачу.

Код, предназначенный для вывода значка, синтаксически очень похож на код для вывода курсора. При использовании Windows API нам понадобится дескриптор значка, вызов функции Loadicon для создания ресурса и функция Setlcon: ,

^ «

HICON hicon;

hicon = Loadicon(hinst, MAKEINTRESOURCE(ICON_RESOURCE));

// hicon = Loadicon(hinst, /* LPCSTR*/ szIconName);

Setlcon( hicon) ;

Библиотека OWL существенно упрощает код, необходимый для загрузки значка:

GetMainWindow()->SetIcon(this, ICON_RESOURCE_ID) ;

Чтобы представить себе, как работает функция Setlcon класса TFramewindow, взгляните на ее объявление:

bool Setlcon(TModule* iconModule, TResId iconRes);

Переменная * iconModule — это указатель на базовый класс TModule. Поскольку ТАрр косвенно наследуется от класса TModule, указатель this годится и для TModule* (схема наследования показана на рис. 31.7). Тип TResid — это класс, который загружает ресурс по его идентификатору.

h08861.jpg

Рис.31.7

Схема наследования класса ТАрр