Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы Word.docx
Скачиваний:
34
Добавлен:
16.03.2016
Размер:
352.09 Кб
Скачать

Курсоры

Подход здесь полностью идентичен. Привожу ниже файл ресурсов, где определен и курсор, и пиктограмма.

#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.

Меню и ресурсы

Меню также может быть задано в файле ресурсов. Как и диалоговое окно, в программе оно определяется по имени (строке). Меню можно задать и в обычном окне в диалоговом окне. Для обычного окна при регистрации класса следует просто заменить строку

MOV DWORD PTR [WC.CLMENNAME],0

На

MOV DWORD PTR [WC.CLMENNAME],OFFSET MENS

где MENS– имя, под которым меню располагается в файле ресурсов.

Меню на диалоговое окно устанавливается другим способом, который, разумеется, подходит и для обычного окна. В начале меню загружается при помощи функции LoadMenu,а затем устанавливается функциейSetMenu.

Рассмотрим структуру файла ресурсов, содержащего определение меню. Ниже представлен текст файла, содержащего определение меню.

Далее представлена программа, демонстрирующая меню на диалоговом окне.

MENUP MENU

{

POPUP “&Первый пункт”

{

MENUITEM “&Первый”, 1

MENUITEM “&Второй”, 2

POPUP “Подмен&ю”

{

MENUITEM “Десятый пунк&т”,6

}

}

POPUP “&Второй пункт”

{

MENUITEM “Трети&й”,3

MENUITEM “Четверт&ый”,4

}

MENITEM “Вы&ход”,5

}

Как видите пункты меню имеют идентификаторы, по которым в программе можно определить, какой пункт меню выбран. Можно заметить, что выпадающее меню может содержать ещё и подменю.

Пункты меню могут содержат дополнительные параметры, которые определяют дополнительные свойства этих пунктов. Вот эти свойства, понимаемые компилятором ресурсов:

  • CHECKED– пункт отмечен галочкой;

  • GRAYED– элемент недоступен (имеет серый цвет);

  • HELP– элемент может быть связан с помощью. Редакторы ресурсов дополнительно создают ресурс – строку. При этом идентификатор строки совпадает с идентификатором пункта меню.

  • MENUBARBREAK– для горизонтального пункт это означает, что начиная с него горизонтальные пункт располагаются в новой строке. Для вертикального пункт – то, что начиная с него пункты расположены в новом столбце. При этом проводится разделительная линия.

  • MENUBREAK– аналогично предыдущему, но разделительная линия не проводится;

  • INACTIVE– пункт не срабатывает;

  • SEPARATOR– создает в меню разделитель. При этом идентификатор не ставится.

В Windowsесть обширный набор функций, с помощью которых можно менять свойства меню (удалять и добавлять пункты меню, менять их свойства).