![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Пиктограммы
Могут быть описаны в самом файле ресурсов, либо хранится в отдельном ico-файле. Рассмотрим последний случай. Вот файл ресурсов resu.rc:
#define IDI_ICON1 1 IDI_ICON1 ICON “Cdrom01.ico”
Как видите, файл содержит всего две значимы строки. Одна строка определяет идентификатор пиктограммы, вторая – ассоциирует идентификатор с файлом Cdrom01.ico. Язык ресурсов очень напоминает язык Си. Откомпилируем текстовый файл resu.rc: RC resu.rc. На диске появится объектный файл resu.res. При компоновке укажем этот файл в командной строке: LINK / subsysem: windows resu.obj resu.res Для использования данного ресурса в программе, приведем пример. Предположим, что мы хотим установить новую пиктограмму для окна. Вот фрагмент программы, который устанавливает стандартную пиктограмму для главного окна:
PUSH IDI_APPLICATION PUSH 0 CALL LoadIconA8 MOV [WC.CLSHICON], EAX
А вот фрагмент программы для установки пиктограммы указанной в файле ресурсов:
PUSH 1; идентификатор пиктограммы-см. файл resu.rc PUSH [HINST]; идентификатор процесса CALL LoadIconA@8 MOV [WC.CLSHICON], EAX
Структура значка NotifyIconDataA STRUCT cbSize DWORD?; размер структуры hwnd DWORD?; дескриптор окна uID DWORD?; идентификатор пиктограммы uFlags DWORD?; флаги uCallbackMessage DWORD?; идентификатор сообщения hIcon DWORD?; дескриптор пиктограммы szTip DWORD?; сообщение, которое будет ; отображаться NotifyIconDataA ENDS
Курсоры Подход здесь полностью идентичен. Привожу ниже файл ресурсов, где определен и курсор, и пиктограмма. #define IDI_ICON 1 #define IDI_CUR1 2
IDI_ICON1 ICON “Cdrom01.ico” IDI_CUR1 CURSOR “4way01.cur”
А вот фрагмент программы, вызывающей пиктограмму и курсор.
; -------------- пиктограмма окна PUSH 1; PUSH [HINST] CALL LoadIconA@8 MOV [WC.CLSHICON], EAX
; -------------- курсор окна PUSH 2 PUSH [HINST] CALL LoadCursorA@8 MOV [WC.CLSHCURSOR], EAX
Битовые картинки Здесь ситуация аналогична двум предыдущим. Вот пример файла ресурсов с битовой картинкой:
#define BIT1 1 BIT1 BITMAP “PIR2.BMP”
Строки Чтобы задать строку или несколько строк, используется ключевое слово STRINGTABLE. Ниже представлен текст ресурса, задающий две строки. Для загрузки строки в пиктограмму используется функция LoadString. Строки, задаваемые в файле ресурсов, могут играть роль констант.
#define STR1 1 #define STR2 2 STRINGTABLE { STR1, “Сообщение” STR2, “Версия 1.01” }
Диалоговые окна Диалоговые окна являются наиболее сложными элементами ресурсов. Поэтому работа с диалоговыми окнами рассматривается в лабораторной работе №3.
|