14. Понятие ресурсов программ. Виды ресурсов. Работа с ресурсами. Меню. Окна диалога.
Ресурсы являются составной частью приложений для Windows. В них определяются такие объекты, как пиктограммы, курсоры, растровые образы, таблицы строк, меню, диалоговые окна и многие другие.
Для некоторых видов ресурсов система содержит предопределенные (стандартные) объекты.
Все нестандартные ресурсы должны быть определены в файле описания ресурсов (resource script), который является ASCII-файлом с расширением .rс. Хотя теоретически такой файл можно подготовить в обычном текстовом редакторе, подобная технология используется крайне редко, поскольку любая интегрированная среда содержит удобные редакторы ресурсов, максимально упрощающие и автоматизирующие этот процесс.
Файл описания ресурса транслируется компилятором ресурсов (файл rс.ехе в составе интегрированной среды). В результате образуется бинарный файл с расширением .res. При загрузке в память исполняемого кода программы Windows обычно оставляет ресурсы на диске. Потом они загружаются в память только по мере необходимости.
Меню, располагающееся ниже заголовка окна приложения, называется главным меню (main menu), или меню верхнего уровня. Главное меню относится ко всему приложению. Любое меню содержит пункты меню. Пункт меню обозначается на полосе меню своим именем — словом или короткой фразой. Различают два типа пунктов меню:
пункт-команда;
пункт-подменю.
Пункт-команда — это терминальный (конечный) пункт на иерархическом дереве меню. Выбирая такой пункт, пользователь либо изменяет внутреннее состояние приложения, либо заставляет его выполнить некоторое действие. В программном коде пункту-команде сопоставлен уникальный целочисленный идентификатор.
Пункт-подменю — это заголовок вызываемого меню следующего, более низкого уровня.
Диалоговое окно имеет вид всплывающего окна с одним или несколькими элементами управления (controls), которые являются для него дочерними окнами. Используя элементы управления, пользователь вводит текст, выбирает указанные опции (флажки, переключатели, элементы списка) и нажимает кнопки, вызывающие различные действия приложения.
От обычных окон диалоговые окна отличаются тем, что они создаются на базе предопределенного в Windows класса диалоговых окон. Оконная процедура этого класса обеспечивает обработку сообщений, поступающих в диалоговое окно, а также задает специфическое поведение элементов управления диалогового окна. Эту невидимую для программиста оконную процедуру иногда называют менеджером диалогового окна (dialog box manager). Менеджер диалогового окна передает многие сообщения в функцию, определенную в вашем приложении, которая называется процедурой диалогового окна, или просто диалоговой процедурой (dialog procedure).
Второе отличие диалоговых окон от обычных окон состоит в том, что они всегда связаны с шаблоном диалога, содержащим размеры окна, состав и расположение элементов управления.
Когда в программе вызывается модальное диалоговое окно, оно ожидает выполнения некоторого действия со стороны пользователя, прежде чем программа сможет продолжить свое выполнение. Пользователь не может переключиться между диалоговым окном и другими окнами программы. Он должен явно закрыть диалоговое окно, что обычно делается щелчком на кнопке ОК или Cancel. Однако пользователь может переключаться в другие программы, не закрыв диалоговое окно. Существует также специальный вид модальных диалоговых окон — системные модальные (system modal) окна, которые не позволяют переключаться даже в другие программы. Они сообщают о серьезных проблемах, и пользователь должен закрыть системное модальное окно, чтобы продолжить работу в Windows.
Немодальное диалоговое окно не приостанавливает выполнение программы. Оно может получать и терять фокус ввода. Это значит, что пользователь может свободно переключаться между диалоговым окном и другими окнами программы. Окна этого типа предпочтительней использовать в тех случаях, когда они содержат элементы управления, которые должны быть в любой момент доступны пользователю.
Yandex.RTB R-A-252273-3- Модель программного интерфейса ос windows. Понятие объекта ядра и описателя объекта ядра операционной системы Windows. Нотация программного интерфейса.
- Понятие пользовательского режима и режима ядра операционной системы Windows. Модель виртуальной памяти процесса в пользовательском режиме и в режиме ядра операционной системы Windows.
- Обзор архитектуры и основных модулей операционной системы Windows.
- Системный реестр операционной системы Windows.
- 5. Основные элементы программ с оконным пользовательским интерфейсом. Минимальная программа для ос Windows с окном на экране. Создание и отображение окна.
- Понятие оконного сообщения. Источники сообщений. Очередь сообщений. Цикл приема и обработки сообщений. Процедура обработки сообщений.
- 8. Вывод информации в окно. Механизм перерисовки окна.
- 9. Принципы построения графической подсистемы ос Windows. Понятие контекста устройства. Вывод графической информации на физическое устройство.
- 10. Рисование геометрических фигур. Графические инструменты. Управление цветом. Палитры цветов.
- 11. Растровые изображения. Вывод растровых изображений. Значки и курсоры. Вывод растровых изображений с эффектом прозрачного фона.
- 12. Вывод текста. Логические и физические шрифты.
- 13. Системы координат. Трансформации. Режимы масштабирования.
- 14. Понятие ресурсов программ. Виды ресурсов. Работа с ресурсами. Меню. Окна диалога.
- 15. Понятие динамически подключаемой библиотеки. Структура dll-библиотеки. Создание dll-библиотеки. Использование dll-библиотеки в программе. Статический и динамический импорт.
- 16. Отображение файлов в память.
- 17. Организация многозадачности в операционной системе Windows. Понятие процесса и потока. Контекст потока. Создание и завершение процессов и потоков.
- 18. Механизм приоритетов в операционной системе Windows. Класс приоритета процесса. Относительный приоритет потока. Базовый и динамический приоритеты потока.
- 19. Синхронизация потоков в пределах одного процесса. Критические секции. Спин-блокировки. Interlocked-функции.
- 20. Синхронизация потоков разных процессов. Объекты синхронизации: флаги, семафоры, события, ожидаемые таймеры, именованные и неименованные «трубы» (каналы).
- 21. Синхронизация потоков при создании общих данных с помощью двойных проверок (double-checked locking).
- 22. Синхронизация потоков с помощью мониторов Хоара.
- 24. Структуры данных общего назначения в режиме ядра. Представление строк стандарта Unicode. Представление двусвязных списков.
- 25. Понятие прерывания, исключения и системного вызова.
- 26. Аппаратные и программные прерывания. Таблица обработчиков прерываний. Понятие процедуры обработки прерываний (isr).
- 27. Программируемый контролер прерываний. Уровни прерываний. Механизм вызова прерываний. Функция KeBugCheckEx.
- 28. Исключения. Механизм обработки исключения.
- 29. Системные вызовы. Выполнение системного вызова.
- 30. Понятие отложенной процедуры (dpc). Назначение отложенных процедур.
- 31. Понятие асинхронной процедуры (apc). Назначение асинхронных процедур. Асинхронные процедуры режима ядра и пользовательского режима.
- 32. Понятие рабочего элемента ядра (Work Item). Назначение рабочих элементов.
- 33. Пулы памяти. Пул подкачиваемой памяти, пул неподкачиваемой памяти, пул сессии, особый пул. Тегирование пулов. Структура данных пула.
- 34. Оптимизация использования оперативной памяти с помощью списков предыстории (look-aside lists).
- 35. Блокирование страниц в памяти. Списки описателей памяти (mdl) и их использование
- 36. Представление объекта ядра в памяти. Менеджер объектов.
- 37. Структура драйвера операционной системы Windows. Точки входа в драйвер.
- 38. Объект, описывающий драйвер. Объект, описывающий устройство. Объект, описывающий файл. Взаимосвязь объектов.
- 39. Запрос ввода-вывода (irp). Схема выполнения ввода-вывода в стеке драйверов.
- 40. Структура api ядра ос Windows: Kernel api, Windowing api, Messaging api. Функции ZwXxx/NtXxx в пользовательском режиме и в режиме ядра.
- 42. Перехват функций ос Windows api в пользовательском режиме. Интерфейсный модуль ntdll.Dll.
- 43. Перехват вызова функций ос Windows в режиме ядра. Встроенная защита от перехвата в новейших версиях ос Windows.