В предыдущих разделах рассматривалась последовательность создания новых файлов картинок и пиктограмм. Теперь рассмотрим случай, когда требуется включить картинку, пиктограмму или курсор в файл ресурсов какого-то проекта или компонента. Файлы ресурсов проектов имеют расширение .res и содержат битовые матрицы (.bmp), пиктограммы (.ico), изображения курсоров (.cur), используемые в проекте. Файлы ресурсов компонентов имеют расширение .dcr (dynamic component resource — динамические ресурсы компонента) и могут включать такие же элементы, как и файлы .res.
В некоторых случаях включение изображений в файл ресурса — единственная возможность решить ту или иную задачу. Например, если вы хотите ввести в своем приложении какой-то нестандартный курсор, это можно сделать, зарегистрировав его с помощью функции LoadCursor в свойстве Cursors компонента Screen. Однако, для использования своего курсора надо сначала создать его и включить в ресурс приложения с помощью Редактора Изображений. Другой пример — создание пиктограммы для нового компонента, включаемого вами в библиотеку C++Builder. Эта пиктограмма также должна быть создана не в виде отдельного файла, а как элемент ресурса компонента.
Работа с файлом ресурса приложения в Редакторе Изображений обычно начинается командой File |Open, открывающей файл ресурсов приложения .res, в котором вы хотите что-то изменить. Перед вами открывается окно, содержащее структуру файла в виде дерева (рис. 5а). Сначала в нем может быть только один узел — Icon, содержащий вершину MAIN1CON, соответствующую стандартной пиктограмме приложения. Добавить новые узлы вы можете с помощью команды Resource | New (ее вы можете найти и во всплывающем меню Редактора Изображений), выполняя которую вам предоставляется возможность выбрать один из типов элементов: Bitmap, Cursor или Icon. Пусть, например, вы хотите использовать в своем приложении нестандартный курсор в виде человечка с указкой. Вы выполняете Resource | New Cursor и в дереве структуры файла ресурсов приложения появляется новая вершина. Вы должны задать ей то имя, которое в дальнейшем будете использовать в приложении при регистрации курсора функцией LoadCursor. Затем вы щелкаете на созданной вершине и вам открывается заготовка изображения курсора, в которой вы рисуете нужную картинку.
При рисовании курсора в главном меню Редактора Изображений появляется раздел Cursor (см. рис. 5а) с двумя подразделами: Set Hot Cpot — указание горячей точки, и Test — тестирование. Горячая точка — это та точка изображения курсора, координатами которой являются параметры X и Y, передающиеся в обработчики событий мыши. При выборе раздела меню Set Hot Spot открывается диалоговое окно (см. рис. 5б), в котором вы должны задать горизонтальную и вертикальную координаты горячей точки. Координаты задаются в пикселях, т.е. чтобы правильно указать координату надо посчитать, на сколько клеточек требуемая точка отстоит от левого верхнего угла рисунка. Например, для курсора на рис. 5а в качестве горячей точки, очевидно, надо задать точку конца указки.
После задания горячей точки вы можете выбрать раздел меню Cursor Test. Перед вами откроется окно, в котором курсор приобретет нарисованный вами вид. Нажав кнопку мыши и передвинув курсор, вы увидите, что за курсором тянется нарисованная линия. Вы можете видеть, из правильной ли точки курсора выходит эта линия, и при необходимости можете подкорректировать координаты горячей точки или само изображение курсора.
Когда вы завершили создание курсора, надо вернуться в окно структуры файла ресурса и выполнить команду File | Save.
Несколько иначе, но подобным же образом создаются файлы ресурсов компонентов. Эта процедура иллюстрируется рисунком 5.7. Начинается работа с команды File | New | Component Resource File (.dcr). Затем, если вы хотите создать пиктограмму для регистрации вашего нового компонента в библиотеке, вы должны выполнить команду Resource New Bitmap и в открывшемся диалоговом окне задать размер картинки — 24 на 24. Только такой размер воспримется при регистрации вашего компонента в библиотеке.
Затем вы должны назвать соответствующую вершину в дереве структуры файла ресурсов тем же именем, которое имеет вводимый вами класс компонента. В противном случае C++Builder не воспримет это изображение как пиктограмму вашего компонента. И последнее требование. Ваш файл .dcr вы должна сохранить с именем, совпадающим с именем файла модуля, в котором вы создаете компонент, и в том же самом каталоге, в котором хранится этот файл модуля. Например, рис. 5.7 подразумевает, что вы создаете компонент, описанный в разделе 7.3.
Класс вашего компонента назван TEditLetNum, а имя модуля, в котором вы создаете свой компонент, — EditLetNum.
Только при соблюдении всех перечисленных выше условий ваше изображение будет воспринято C++Builder как пиктограмма компонента и она будет использована при установке компонента на странице библиотеки.
