Высокоуровневые методы информатики и программирования Лекция 19 Графический интерфейс пользователей
План работы интерфейс пользователя логика работы программ в ОС Windows понятия системного класса window сообщения ОС Windows пространства имен System.Windows.Forms основные классы базовый класс Control
Интерфейс Интерфейс это способ взаимодействия некоторой системы с внешним миром (другими системами). Типы интерфейсов: –Интерфейс между пользователем и компьютером называется пользовательским интерфейсом (способ взаимодействия пользователя с программной системой (операционной системой и приложениями). Консольный (CUI). Графический (GUI). Web – интерфейс. –Интерфейс между программами называется программным интерфейсом (Application Program Interface - API) – интерфейс, который программная система реализует, для того, чтобы другая программа могла с ней взаимодействовать. Например Windows API (Win 32 API).
Интерфейсы программы Пользователь ПрограммаОперационная система (Windows) Интерфейсы APIGUI Win32 API – Windows Application Programming Interface GUI – Graphical User Interface
Пользовательские интерфейсы Способ взаимодействия пользователя с программой –консольный интерфейс (CUI); –графический интерфейс (Windows интерфейс) (GUI).
Console Applications Console User Interface (CUI)
Windows Applications Graphical User Interface (GUI)
Объектная модель программы Программа включает –классы для решения задачи пользователя (разрабатываются программистом) –классы для организации взаимодействия программы с пользователем и ОС (интерфейс - содержатся в библиотеке FCL)
Объектная модель программы Классы решаемой задачи (модель) Классы поддержки интерфейса (представление) Интерфейс – как программа общается с пользователем и ОС (взаимодействие между двумя системами)
Структура типичного приложения
Основной элемент графического интерфейса – окна (windows) Окна это системные объекты операционной системы Windows. OC создает и работает со всеми окнами. Окна занимают некоторую область экрана, с которой взаимодействует пользователь. Для каждого окна в ОС создается объект соответствующего класса, который имеет уникальный номер – handle of window (hwnd). Программы для работы с окнами используют библиотеку Win32API. Для рисования в окне используется библиотека GDI32.
Отношения между окнами Окна верхнего уровня – перекрываемые окна (overloaded window): –пользователь может менять их положение и размеры, –может раскрывать на весь экран дисплея или свертывать в иконку на полосе задач (task bar); –при закрытии окна приложения – программа заканчивает работу. Дочерние окна (overloaded window): –связаны с родительскими окнами (сами могут быть родительскими окнами), –могут размещаться только на территории родительского окна; –перемещаются вместе с родительским окном; –при закрытии родительского окна тоже закрываются.
Типы окон основные окна - используются для представления всего приложения; они включают основные элементы интерфейса и инициируют создание других окон; диалоговые окна - предназначены для получения информации и запуска на выполнения разных вспомогательных задач приложения; элементы управления (control) - дочерние окна, которые используются для выполнения элементарных операций по отображению информации (например, текстовые окна – TextBox, окна со списками строк – ListBox, окна с изображениями PictureBox) или для получения некоторых команд пользователя (например, нажатия кнопок «мыши», кнопок Button, пунктов меню).
Программирование графического интерфейса (GUI) Программирование графического интерфейса основывается на двух механизмах окна (window) –Прямоугольные области экрана, с которыми связаны программы обработки событий (оконные процедуры); сообщения (messages) –каждая программа с графическим интерфейсом имеет очередь сообщений от ОС; –В сообщении передается код события, номер окна (hwnd), с которым связано это сообщение, параметры события, время события.
Структура окна Windows My Window X cursor client area border title bar menu bar status bar кнопки клиентская область строка состояния граница строка заголовка курсор button (0,0) (Left, Top) (Right, Bottom) Height Width X Y строка меню элемент управления Дочернее окно
Основной класс операционной системы window Создает и работает с окнами - ОС Каждое окно имеет номер – handle of window (hwnd) с каждым окном связан обработчик событий – оконная процедура (wndProc)
Элементы графического интерфейса окна Заголовок – title bar Меню – menu Инструментальная полоса – tool bar (tool strip) Клиентская область – client area Полоса состояния – status bar (status strip)
Диалоговое окно (вывода на печать в AcrobatReader)
Стандартное диалоговое окно (сохранение файла)
Содержание окна В окне могут размещаться: –текст; –рисунки (схемы, карты, изображения); –другие окна (элементы управления);
Сообщения операционной системы ОС оповещает окна о всех событиях, которые происходят на компьютере с помощью сообщений (messages). Для каждой прикладной программы (application) с GUI создается очередь сообщений – message queue. В эту очередь ОС отправляет все сообщения: –о изменении окна (Constructor; Load; Activated; Closing; Closed); –о изменении в работе ОС; –о выборе пользователем команд меню или нажатии кнопок в инструментальной полосе; –о действиях пользователя с «мышью» и клавиатурой; –и т.д. В программе сообщения преобразуются в события.
Сообщения о всех операциях пользователей, с мышью и клавиатурой, получает окно, которое имеет фокус ввода. Сообщения отправляются в очередь сообщений того приложения, которому данное окно принадлежит. Фокус ввода переключается: –щелчком мыши в нужном окне –нажатием клавиши табуляции Tab.
Логика обмена сообщениями в среде ОС Windows
Программирование основанное на событиях в ОС Windows
Шпион за действиями операционной системы Spy++ позволяет следить за окнами, процессами и потоками. для просмотра окон используется команда –Команда меню - Search/Find Window проследить за сообщениями, которые посылались оконной процедуре –Команда Messages (в контекстном меню окна)
Результаты работы SPY++
Технологии разработки GUI в.Net Framework В настоящее время существует две основные технологии разработки GUI в платформе.Net Framework: 1.System.Windows.Forms 2.Windows Presentation Foundation (WPF)
Работа с окнами и сообщениями с использованием форм Данная технология включает множество типов (классы, структуры, перечисления, делегаты), которые объединены в два основных пространства имен System.Windows.Forms (для реализации элементов интерфейса). Для рисования в окне используются классы пространства имен System.Drawing.
Библиотека FCL (Framework Class Library) System System.DataSystem.Xml System.Web Globalization Diagnostics Configuration Collections Resources Reflection Net IO Threading Text ServiceProcess Security Design ADO SQLTypes SQL XPath XSLT Runtime InteropServices Remoting Serialization ConfigurationSessionState CachingSecurity Services Description Discovery Protocols UI HtmlControls WebControls System.Drawing Imaging Drawing2D Text Printing System.Windows.Forms FormComponentModel
Основные классы пространства имен System.Windows.Forms КлассПояснение ControlБазовый класс для всех окон !!! FormКласс форм - основное окно приложения (контейнер для элементов управления) Applicationстатический класс приложения MessageBoxстатический класс окон сообщений Timerработа с таймером ClipBoardработа с буфером обмена Menuкласс меню MainMenuосновное меню ContextMenuконтекстное меню
Основными элементами графического интерфейса Основными элементами графического интерфейса являются специальные классы, называемые элементами управления (ЭУ), которые обладают двумя особенностями: –реализуют работу с различными типами окон ОС Windows; –поддерживают работу в двух режимах: режим проектирования (design mode), в котором с ними работает среда разработки; режим выполнения (run mode), в котором выполняется взаимодействие пользователей с ЭУ. Базовым классом для всех элементов управления является класс Control, который содержит важные свойства, методы и события, наследуемые всеми его потомками. Все другие классы элементов управления (ЭУ) являются наследниками класса Control. Базовый класс Control содержит достаточно большое количество элементов (79 свойств, 56 методов, 67 событий), который доступен во всех производных классах.
void Show () { ::Show (hwnd, SC_MIN)} Базовый класс Control - элемент управления (окно) включает в качестве поля номер окна hwnd используя hwnd и WinAPI может управлять своим окном получает и обрабатывает события от ОС Windows поддерживает два режима работы: –Design mode –Run-time mode формирует новые события для классов пользователей - клиентов Class A : Control long hwnd = 1024; // обработчики событий hwnd = 1024;
Иерархия классов элементов управления Классы всех ЭУ наследуются от класса Control и могут использовать его методы и свойства.
Основные свойства класса Control СвойстваОписание Name имя элемента для работы с ЭУ в системе разработки Left,Top, Right,Bottom координаты точек левого верхнего угла и правого нижнего угла (по умолчанию в пикселях относительно окна родителя) Location задать или получить координаты левого верхнего угла в виде объекта структуры Point (по умолчанию в пикселях) Height,Width высота и ширина окна (по умолчанию в пикселях) Size размер окна в виде объекта структуры Size Controls коллекция дочерних элементов управления, которые будут отображаться в текущем окне; поддерживает интерфейс IList ContextMenu ссылка на контекстное меню Cursor ссылка на курсор Parent ссылка на родительское окно (если оно есть) Text заголовок окна Font используемый шрифт TabIndex порядок перехода между ЭУ при нажатии клавиши Tab Dock, DockStyle может ли элемент управления прикрепляться к сторонам родительского окна (true, false); свойство DockStyle задает стороны, к которым должен прикрепляться ЭУ: Top, Bottom, Right, Left, Fill или None Anchor AnchorStyle связывание со стороной родительского окна; отличается от причаливания Dock тем, что не прикрепляется к стороне, а находится на фиксированном расстоянии от нее; значения AnchorStyle такие же, как и у DockStyle BackColor, ForeColor фоновый цвет и цвет рисования
Основные методы и события класса Control МетодыОписание Show() отображение окна на экране Hide() срытие окна CreateGrafics создание объекта класса Graphics для рисования в окне Update() обновление содержания окна Invalidate() объявление содержание окна испорченным, что заставляет ОС отправить событие WM_PAINT о необходимости перерисовки содержания окна СобытияОписание Paint событие о перерисовке пользовательской области окна GetFocuse, LostFocuse события о получении и потере окном фокуса ввода (данных с клавиатуры) Click событие о щелчке левой клавишей «мыши» в области окна MouseMove событие о малом перемещении курсора «мыши» в окне KeyDown, KeyUp сообщения о нажатии и освобождении клавиши клавиатуры KeyPress сообщение о вводе символа с помощью клавиатуры