Взаимодействие windows приложения с пользователем

Введение в создание оконных приложений

Программирование в Windows основывается на использовании функций API (Application Program Interface, т.е. интерфейс программного приложения).

Программа для Windows в значительной степени состоит из таких вызовов. Все взаимодействие с внешними устройствами и ресурсами операционной системы происходит посредством таких функций.

Программный интерфейс приложений

Windows API (Application Programming Interfaces) — общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Microsoft Windows.

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

Все основные функции Windows объявляются в заголовочных файлах. Главный заголовочный файл называется WINDOWS.H, и в этом файле содержится множество ссылок на другие заголовочные файлы.

Основное отличие функций API от библиотечных функций С: код библиотечных функций связывается с кодом программы пользователя, а код функций API остается вне программы пользователя в динамически подключаемых библиотеках (DLL – Dynamic Link Library), что позволяет создавать более компактный и эффективный код приложений.

При запуске программы Windows она взаимодействует с операционной системой посредством процесса «динамического связывания». Большая часть динамических библиотек DLL расположена в каталоге WINDOWS\SYSTEM.

При компоновке программы для Windows, чтобы сделать ее исполняемой, необходимо связывать ее с «библиотеками импорта», поставляемыми в составе среды программирования (IDE – Integrated Development Environment), которой может являться, в частности, Microsoft Visual Studio. Библиотеки импорта содержат имена всех функций Windows из динамически подключаемых библиотек и ссылки на них. Компоновщик использует эту информацию для создания в исполняемом EXE-файле таблицы, которую Windows использует при загрузке программы для настройки адресов функций API.

Графический интерфейс пользователя

Графический интерфейс пользователя (Graphical User Interface, GUI) еще называют «визуальный интерфейс» или «графическая оконная среда».

GUI делает возможным использование графики на растровом экране. Графика дает лучшее восприятие элементов управления на экране, визуально богатую среду для передачи информации. В GUI экран становится устройством ввода и показывает различные графические объекты в виде картинок и конструкций для ввода информации, таких как кнопки или полосы прокрутки. Используя клавиатуру и манипулятор (мышь, тачпад), пользователь может непосредственно оперировать объектами на экране. Графические объекты можно перетаскивать, кнопки можно нажимать, полосы прокрутки можно прокручивать. Взаимодействие между пользователем и программой становится более тесным.

Пользователям не надо тратить слишком много времени на то, чтобы научиться пользоваться компьютером и составлять новые программы. Система Windows способствует этому, поскольку все программы для Windows выглядят и воспринимаются одинаково.

Любая программа для Windows имеет окно — прямоугольную область на экране, в котором приложение отображает информацию и получает реакцию от пользователя. Окно идентифицируется заголовком. Большинство функций программы запускается посредством меню. Слишком большой для экрана объем информации может быть просмотрен с помощью полос прокрутки. Некоторые пункты меню вызывают появление окон диалога, в которые пользователь вводит дополнительную информацию.

Программирование Windows-приложений тесно связано с понятиями объектно-ориентированного программирования. Главным объектом в операционной системе Windows является окно. Окно может содержать элементы управления: кнопки, списки, окна редактирования и др. Эти элементы, по сути, также являются окнами, но обладающими особыми свойствами.

Активное окно – окно, получающее реакцию от пользователя в данный момент.

Основными элементами окна являются

  • 1 — строка заголовка title bar
  • 2 — строка меню menu bar
  • 3 — системное меню system menu
  • 4 — кнопка сворачивания окна minimize box
  • 5 — кнопка разворачивания окна maximize box
  • 6 — рамка изменения размеров sizing border
  • 7 — клиентская область client area
  • 8 — горизонтальная и вертикальная полосы прокрутки scroll bars

Многозадачность

Многозадачность ( multitasking ) — свойство операционной системы обеспечивать возможность параллельной (или псевдопараллельной) обработки нескольких процессов.

Операционная система Windows является многозадачной. Если программа DOS после своего запуска должна быть постоянно активной, и если ей что-то требуется (к примеру, получить очередную порцию данных с устройства ввода-вывода), то она сама должна выполнять соответствующие запросы к операционной системе, то в Windows все наоборот. Программа пассивна, после запуска она ждет, когда ей уделит внимание операционная система. Операционная система делает это посылкой специально оформленных групп данных, называемых сообщениями . Сообщения могут быть разного типа, они функционируют в системе достаточно хаотично, и приложение не знает, какого типа сообщение придет следующим.

Логика построения Windows-приложения должна обеспечивать корректную и предсказуемую работу при поступлении сообщений любого типа. Одновременно несколько программ могут выполняться и иметь вывод на экран. Каждая программа занимает на экране прямоугольное окно. Пользователь может перемещать окна по всему экрану, менять их размер, переключаться между разными программами и передавать данные от одной программы к другой.

Операционная система не сможет реализовать многозадачность без управления памятью. Так как одни программы запускаются, а другие завершаются, память фрагментируется. Операционная система Windows имеет средства управления фрагментами памяти.

Процессы и потоки

Процессом ( process ) называется экземпляр программы, загруженной в память. Экземпляр программы может создавать потоки ( thread ), которые представляют собой последовательность инструкций на выполнение.

Выполняются не процессы, а именно потоки. Любой процесс имеет хотя бы один поток. Этот поток называется главным (основным) потоком приложения .

Потоки на самом деле выполняются не одновременно, а по очереди. Распределение процессорного времени происходит между потоками, но переключение между ними происходит так часто, что кажется будто они выполняются параллельно.

Все потоки ранжируются по приоритетам. Приоритет потока обозначается числом от 0 до 31, и определяется исходя из приоритета процесса, породившего поток, и относительного приоритета самого потока. Таким образом, достигается наибольшая гибкость, и каждый поток в идеале получает столько времени, сколько ему необходимо.

Дескрипторы

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

Примеры дескрипторов, описанных в заголовочном файле windows.h

Контекст устройства

GDI – графический интерфейс устройства. Функции системной библиотеки GDI32.dll используются для вывода графики на экран.

Читайте также:  Что такое список windows word

Дескриптор контекста устройства — это паспорт конкретного окна для функций GDI. Контекст устройства фактически является структурой данных, которая внутренне поддерживается GDI. Он связан с конкретным устройством вывода информации (принтер, дисплей). Что касается дисплея, то в данном случае контекст устройства обычно связан с конкретным окном на экране.

Взаимодействие с пользователем

Разработчику интерфейса пользователя вычислительных систем необходимо решить две главные задачи: каким образом пользователь будет вводить данные в систему и как данные будут представлены пользователю. «Правильный» интерфейс должен обеспечивать и взаимодействие с пользователем, и представление информации.

В этом разделе обсуждаются вопросы взаимодействия системы с пользователем. Интерфейс пользователя обеспечивает ввод команд и данных в вычислительную систему. На первых вычислительных машинах был только один способ ввода данных – через интерфейс командной строки, причем для взаимодействия с машиной использовался специальный командный язык. Такой способ годился только для опытных пользователей, поэтому позже были разработаны более упрощенные способы ввода данных. Все эти виды взаимодействия можно отнести к одному из пяти основных стилей взаимодействия.

1. Непосредственное манипулирование. Пользователь взаимодействует с объектами на экране. Например, для удаления файла пользователь просто перетаскивает его в корзину.

2. Выбор из меню. Пользователь выбирает команду из списка пунктов меню. Очень часто выбранная команда воздействует только на тот объект, который выделен (выбран) на экране. При таком подходе для удаления файла пользователь сначала выбирает файл, а затем команду на удаление.

3. Заполнение форм. Пользователь заполняет поля экранной формы. Некоторые поля могут иметь свое меню (выпадающее меню или списки). В форме могут быть командные кнопки, при щелчке мышью на которых инициируют некоторое действие. Чтобы удалить файл с помощью интерфейса, основанного на форме, надо ввести в поле формы имя файла и затем щелкнуть на кнопке удаления, присутствующей в форме.

4. Командный язык. Пользователь вводит конкретную команду с параметрами, чтобы указать системе, что она должна дальше делать. Чтобы удалить файл, пользователь вводит команду удаления с именем файла в качестве параметра этой команды.

5. Естественный язык. Пользователь вводит команду на естественном языке. Чтобы удалить файл, пользователь может ввести команду «удалить файл с именем XXX».

Каждый из этих стилей взаимодействия имеет преимущества и недостатки и наилучшим образом подходит разным типам приложений и различным категориям пользователей. В табл. 13.3 перечислены основные преимущества и недостатки перечисленных стилей взаимодействия и указаны типы приложений, в которых они обычно используются.

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

Таблица 13.3. Преимущества и недостатки стилей взаимодействия пользователя с системой

Стиль взаимодействия Основные преимущества Основные недостатки Примеры приложений
Прямое манипулирование Быстрое и интуитивно понятное взаимодействие. Легок в изучении Сложная реализация. Подходит только там, где есть зрительный образ задач и объектов Видеоигры; системы автоматического проектирования
Выбор из меню Сокращение количества ошибок пользователя. Ввод с клавиатуры минимальный Медленный вариант для опытных пользователей. Может быть сложным, если меню состоит из большого количества вложенных пунктов Главным образом системы общего назначения
Заполнение форм Простой ввод данных. Легок в изучении Занимает пространство на экране Системы управления запасами; обработка финансовой информации
Командный язык Мощный и гибкий Труден в изучении. Сложно предотвратить ошибки ввода Операционные системы; библиотечные системы
Естественный язык Подходит неопытным пользователям. Легко настраивается Требует большого ручного набора Системы расписания; системы хранения данных WWW

Пользовательские интерфейсы приложений World Wide Web базируются на средствах, предоставляемых языком HTML (язык разметки Web-страниц) вместе с другими языками, например Java, который связывает программы с компонентами Web-страниц. В основном интерфейсы Web-страниц проектируются для случайных пользователей и представляют собой интерфейсы в виде форм. В Web-приложениях можно создавать интерфейсы, в которых применялся бы стиль прямого манипулирования, однако к моменту написания книги проектирование таких интерфейсов представляло достаточно сложную в аспекте программирования задачу.

В принципе необходимо применять различные стили взаимодействия для управления разными системными объектами. Данный принцип составляет основу модели Сихейма (Seeheim) пользовательских интерфейсов. В этой модели разделяются представление информации, управление диалоговыми средствами и управление приложением. На самом деле такая модель является скорее идеальной, чем практической, однако почти всегда есть возможность разделить интерфейсы для разных классов пользователей (например, начинающих и опытных). На рис. 13.2 изображена подобная модель с разделенными интерфейсом командного языка и графическим интерфейсом, лежащая в основе некоторых операционных систем, в частности Linux.

Рис. 13.2. Множественный интерфейс

Разделение представления, взаимодействия и объектов, включенных в интерфейс пользователя, является основным принципом подхода «модель-представление-контроллер», который обсуждается в следующем разделе. Эта модель сравнима с моделью Сихейма, однако используется при реализации отдельных объектов интерфейса, а не всего приложения.

Реферат: Механизмы взаимодействия приложения с пользователем

МЕХАНИЗМЫ ВЗАИМОДЕЙСТВИЯ ПРИЛОЖЕНИЯ С

Файл ресурсов

Ресурсами называются некоторые данные, которые определяются еще до начала работы программы, особым образом добавляются в выполняемый файл и используются при работе программы. Яркими примерами таких данных являются:

используемые в программе изображения;

ресурсы, определяемые пользователем.

Помимо того, что ресурсы определяются до начала работы программы и добавляются в исполняемый файл, у них есть еще одна характерная черта. При загрузке bin-файла в память, РЕСУРСЫ В ПАМЯТЬ НЕ ЗАГРУЖАЮТСЯ. Только в случае, если тот или иной ресурс требуется для работы программы, программа сама загружает ресурс в память.

Возможность использования того или иного атрибута в качестве ресурса не означает, что программист не может создавать эти атрибуты в программе.

Все ресурсы, заранее определенные в Win32 API, называются стандартными.

Существует пять типов однострочного описания ресурса:

Каждый из этих операторов загружает файл данных указанного типа в данные ресурса. После включения этих данных в данные ресурса могут применяться функции LoadBitmap (), LoadCursor () и LoadIcon () для непосредственного доступа к соответствующим данным в программе.

1. Функция LoadBitmap () загружает ресурс растрового изображения из файла ресурсов. В файле описания ресурсов приложения необходимо указать растровое изображение с помощью оператора BITMAP. Формат оператора имеет следующий вид:

BITMAPNAMEBITMAP «BITMAPFILE. BMP»

По окончании использования растрового изображения, приложение должно вызвать функцию DeleteObject () для освобождения памяти, занимаемой изображением. Синтаксис функций следующий:

HBITMAP LoadBitmap (HINSTANCE hInst, LPCTSTR lpszBitmap)

hInst — хэндл приложения, в которое загружается растровое изображение;

lpsz Bitmap — указатель на строку с нулевым символом в конце, которая содержит имя ресурса растрового изображения, подлежащего загрузке.

Возвращаемое значение: при успешном выполнении — хендл загруженного растрового изображения, иначе — NULL.

Функция DeleteObject () удаляет логический объект, для создания которых применяется достаточно много функций. Синтаксис функции следующий.

BOOL DeleteObject (HGDIOBJ hGdiObject)

hGdiObject — хэндл объекта GDI. Этот параметр должен указывать хендл пера, растрового изображения, кисти, области, палитры или шрифта.

Возвращаемое значение: при успешном выполнении — TRUE, иначе — FALSE.

2. Функция LoadCursor () загружает ресурс курсора из файла ресурсов. Если курсор загружен в составе определения класса окна, то курсор мыши, находясь в пределах клиентской области окна, будет принимать форму загруженного курсора. В файле описания ресурсов приложения необходимо указать пиктограмму с помощью оператора CURSOR. Формат оператора имеет следующий вид:

Если требуется в разное время иметь разные формы курсора в клиентской области окна, то форма курсора класса окна должна быть установлена в NULL, а курсор должен быть указан путем вызова функции SetCursor () при получении каждого сообщения WM_SETCURSOR. Синтаксис функций следующий:

HCURSOR LoadCursor (HINSTANCE hInst, LPCTSTR lpszCursor)

hInst — хэндл приложения, в которое загружается курсор. Для загрузки системного курсора параметр hInst должен быть равным NULL;

lpszCursor — указатель на строку с нулевым символом в конце, которая содержит имя ресурса курсора, подлежащего загрузке. Если задан системный курсор, то параметр должен принимать одно из значений идентификаторов IDC_.

Возвращаемое значение: при успешном выполнении — хендл загруженного курсора, иначе — NULL.

3. Функция LoadIcon () загружает пиктограмму из файла ресурсов. В файле описания ресурсов приложения необходимо указать пиктограмму с помощью оператора ICON. Формат оператора имеет следующий вид:

ICONNAMEICON «ICONFILE. ICO»

Эта функция также позволяет получить пиктограммы, определенные в системе. Для загрузки системных пиктограмм параметр hInst должен быть равным нулю. Синтаксис функций следующий:

HICON LoadIcon (HINSTANCE hInst, LPCTSTR lpszIcon)

hInst — хэндл приложения, в которое загружается растровое изображение;

lpszIcon — указатель на строку с нулевым символом в конце, которая содержит имя ресурса пиктограммы, подлежащей загрузке. Если задан системная пиктограмма, то параметр должен принимать одно из значений идентификаторов IDI_.

Возвращаемое значение: при успешном выполнении — хендл загруженной пиктограммы, иначе — NULL.

4. Функция AddFontResource () обычно используется для ввод ресурса шрифта из файла в таблицу шрифтов Windows. Таблица шрифтов содержит данные о шрифтах, доступных для приложения Windows. В качестве имен файлов шрифтов может быть указано:

файл. FON ресурса шрифта;

файл. FNT первичного растрового шрифта;

файл. TTF первичного шрифта TrueType;

файл. TTC коллекции шрифтов TrueType;

файл. FOT ресураса TrueType;

файл. OTF шрифта OpenType PostScript;

файл. MMM ресурса шрифта Type 1 с несколькими базовыми шрифтами;

файл. PFB двоичного представления шрифта Type 1;

файл. PFM метрики шрифта Type 1.

Синтаксис функции следующий:

int AddFontResource (LPCTSTR lpszFileName)

lpszFileName — указатель на строку с нулевым символом в конце, которая содержит допустимое имя файла шрифта.

Возвращаемое значение: при успешном выполнении — число добавленных шрифтов, иначе — NULL.

Если необходимо ввести шрифт, данные которого должны быть получены из нескольких файлов ресурса, в качестве параметра lpszFileName необходимо указать имена всех этих файлов, разделенные символом (|).

Окнам верхнего уровня должно быть отправлено сообщение WM_FONTCHANGE, чтобы работающие программы получили информацию об изменении состава доступных шрифтов. Удаляет из таблицы шрифтов Windows шрифты, содержащиеся в указанном файле, функция RemoveFontResource (). Обычно она применяется при обработке сообщения WM_DESTROY для удаления добавленных ресурсов шрифта. Синтаксис функции следующий:

BOOL RemoveFontResource (LPCTSTR lpszFileName)

lpszFileName — указатель на строку с нулевым символом в конце, которая содержит имя файла ресурса шрифта.

Возвращаемое значение: при успешном выполнении — TRUE, иначе — NULL.

Работу со шрифтами рассмотрим позже.

5. Для загрузки сообщений из файла ресурса служит функция FormatMessage (). О ней также позже.

Существует пять типов многострочного описания ресурса:

Многострочные типы описания ресурсов легко распознать. В них для определения блоков данных ресурса используются операторы BEGIN и END. Наиболее простое описание ресурсов это:

Таблицы строк (STRINGTABLE)

В большинстве приложений в сообщениях и текстовом выводе применяются символьные строки. В системе Windows в качестве альтернативы обычному методу размещения строк в области статических данных программы предусмотрены таблицы строк. Символьные строки определяются в файле описания ресурса и приобретают идентификационное значение. Например:

Идентификационные значения строк обычно определяются в отдельном файле заголовка, который включен в файл описания ресурса, наряду с модулем, обеспечивающим доступ к строкам.

Для использования этих данных в приложении служит функция LoadString ().

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

int LoadString (HINSTANCE hInst, UINT uID, LPTSTR lpBuffer, int nBuffer)

hInst — хэндл приложения, в которое загружается строка;

uID — идентификационное значение для строки в таблице строк. Этот параметр обозначает позицию слева от строки в файле ресурса;

lpBuffer — указатель на буфер, который примет символьную строку. Буффер должен иметь длину не менее nBuffer символов типа TCHAR;

nBuffer — максимальное число символов, которые должны быть скопированы в буфер lpBuffer.

Возвращаемое значение: при успешном выполнении — число символов типа TCHAR, скопированных в буфер, без учета нулевого символа — конца строки, иначе — 0.

Ресурсы создаются отдельно от файлов программы и добавляются в bin-файл при линковании программы. Подавляющее большинство ресурсов содержится в файлах ресурсов, имеющих расширение. RC. Имя файла ресурсов обычно совпадает с именем bin-файла программы. Так, если имя программы MYPROG. EXE, то имя файла ресурсов — MYPROG. RC.

При создании RC-файлов программист может столкнуться с одной тонкостью. Некоторые ресурсы, такие, как иконки, курсоры, диалоговые окна, изображения (bitmap’ы) могут быть сохранены в отдельных файлах с расширениями. ico,. cur,. dig,. bmp соответственно. В этом случае в RC-файлах делаются ссылки на упомянутые файлы.

Файл ресурсов создан — теперь его нужно откомпилировать. Компилируется он специальным компилятором ресурсов. Обычно имя компилятора ресурсов заканчивается на RC. EXE. В частности, в Borland 5.02 он называется BRC. EXE

После компиляции файла ресурсов компилятором ресурсов создается новый файл, имеющий расширение. RES. Именно этот RES-файл используется линкером для добавления ресурсов в bin-файл. Следует отметить, что при необходимости RES-файлы могут создаваться и редакторами ресурсов. В каком формате создавать ресурсы и как присоединять их к исполняемому файлу, зависит от потребностей и привычек создающего ресурсы программиста.

Таким образом, последовательность создания файла ресурса можно изобразить в виде табл.1.

Последовательность создания файла ресурсов

Название: Механизмы взаимодействия приложения с пользователем
Раздел: Рефераты по информатике, программированию
Тип: реферат Добавлен 06:53:37 04 октября 2010 Похожие работы
Просмотров: 24 Комментариев: 14 Оценило: 3 человек Средний балл: 5 Оценка: неизвестно Скачать
№ п/п Действие Используемое средство
Создание RC-файла (при необходимости включающего ссылки на файлы с расширением. ico,. cur,. bmp, и т.д.) Редактор ресурсов (при необходимости может быть использован текстовый и графический редакторы)
Редактирование RC-файла в текстовом виде Текстовый редактор
Компиляция RC-файла — получение RES-файла Компилятор ресурсов
Добавление ресурсов, содержащихся в RES-файлс, в bin-файл Линкер

Меню приложения

Любой, кто хоть немного работал в Windows, знает, что меню располагаются сразу под заголовком окна и позволяют пользователю осуществить выбор возможностей, предоставляемых программой. Существует два вида меню:

главное меню окна;

всплывающее (контекстное) меню, которое может появляться в любой точке экрана. Обычно их содержание зависит от того, на каком окне щелкнули клавишей мыши.

Основным отображаемым элементом меню является строка или графический объект. Здесь рассматриваются только строки. Они в текстовом виде отображают названия разделов или команд меню, а также клавиш быстрого доступа. Строка может быть отмечена галочкой или иным образом. Такая строка используется как флажок или переключатель, изменяющий режим работы приложения. Если при выборе строки на экране должна появиться диалоговая панель, к слову справа добавляют многоточие. Заблокированные строки меню отображают серым цветом.

Любое перекрывающееся или временное окно может иметь меню. Главное меню находится ниже заголовка окна, и его строки расположены в одну или несколько линий. При выборе строки главного меню, как правило, активизируется раздел меню. Раздел меню представляет собой временное меню.

Строки временного меню расположены в один или несколько столбцов. Если временное меню может появляться в любом месте рабочей области, то оно называется плавающим. В некоторых случаях удобнее применять плавающее меню. Они «всплывают» после щелчка обычно правой клавиши мыши, и место «всплытия» нетрудно связать с координатами курсора мыши. Тогда легче выбрать нужную строку меню. Кроме того, по координатам курсора мыши можно определить объект, по изображению которого был сделан щелчок, и задать зависимый от этого объекта набор строк меню.

По способу создания различают статическое и динамическое меню. Статическое меню создают до запуска и не изменяют в процессе работы приложения. Динамическое меню создают в процессе работы приложения. Динамическое меню после создания можно изменять или оставить неизменным. Работа со строками статических и динамических меню ничем не отличается.

Многоуровневая древовидная структура меню описывается в файле ресурсов. Описание меню имеет вид:

MenuNameMENU [параметры] // это — главное меню

// Описание всех popup-меню и элементов меню второго уровня

MenuName- это имя создаваемого нами меню. Слово MENU- обозначает начало определения меню. Параметры меню

В Win32 API для описания меню существуют два ключевых слова:

POPUP — специфицирует всплывающее меню.

MENUITEM — описывает обычный элемент меню.

Всплывающие меню описывается следующим образом:

POPUP «Имя» [, параметры] // — описание popup-меню

// Описание всех popup-меню и элементов очередного уровня

У конечного элемента меню в его описании есть еще одна характеристика — идентификатор действия:

MENUITEM»Имя», MenuID [, параметры]

В обоих случаях «Имя» — это тот текст, который будет выведен на экран при отображении меню.

Если вместо имени меню окна записано слово SEPARATOR (без кавычек), на месте элемента меню появляется горизонтальная линия, применяемая для разделения элементов подменю не логические группы.

Если в имени меню встречается символ «&», то следующий за амперсандом символ на экране будет подчеркнут одинарной чертой. Этот элемент меню можно будет вызвать с клавиатуры посредством одновременного нажатия клавиши Alt и подчеркнутого символа.

MenuID — идентификатор действия. Он может быть передан функции окна, содержащего меню. Значение идентификатора определяется пользователем. Функция окна в зависимости от полученного MenuID производит определенные действия.

Параметры же описывают способ появления элемента на экране. Возможные значения параметров приведены в табл.2.

Таким образом, элементы в меню могут быть:

Для пользователя обычные и запрещенные элементы выглядят одинаково, а текст в «серых» элементах напечатан серым шрифтом. Но только обычные элементы позволяют пользователю произвести выбор. Запрещенные и «серые» элементы меню могут быть только подсвечены, но с их помощью произвести выбор нельзя.

Параметры, описывающие элемент меню в файле ресурсов

Флаг Значение
CHECKED Рядом с именем элемента может отображаться небольшой значок, говорящий о том, что соответствующий флаг установлен
ENABLED Элемент меню доступен
DISABLED Элемент меню недоступен, но отображается как обычный
GRAYED Элемент меню недоступен и отображается серым цветом
MENUBREAK Горизонтальные меню размещают следующие элементы в новой строке, а вертикальные — в новом столбце
MENUBARBREAK То же, что и предыдущее, но в случае вертикального меню столбцы разделяются вертикальной линией

Например. Попробуем создать описание небольшого меню. Горизонтальное меню (menubar) позволит выбирать подменю «File», «Examples» и конечный элемент «Help». Подменю «File» будет содержать элементы «Open » и «Exit», разделенные горизонтальной линией, а подменю «Examples» — несколько конечных элементов.

Ниже приведен текст скрипта для этого меню:

Читайте также:  Warcraft 3 frozen throne mac os не запускается
Оцените статью