GUI Introdution

Download Report

Transcript GUI Introdution

Высокоуровневые методы
информатики и
программирования
Лекция 19
Графический интерфейс
пользователей
План работы
•
•
•
•
•
•
•
интерфейс пользователя
логика работы программ в ОС Windows
понятия системного класса window
сообщения ОС Windows
пространства имен System.Windows.Forms
основные классы
базовый класс Control
Интерфейс
• Интерфейс это способ взаимодействия некоторой системы
с внешним миром (другими системами).
• Типы интерфейсов:
– Интерфейс между пользователем и компьютером называется
пользовательским интерфейсом (способ взаимодействия
пользователя с программной системой (операционной
системой и приложениями).
• Консольный (CUI).
• Графический (GUI).
• Web – интерфейс.
– Интерфейс между программами называется программным
интерфейсом (Application Program Interface - API) – интерфейс,
который программная система реализует, для того, чтобы
другая программа могла с ней взаимодействовать. Например
Windows API (Win 32 API).
Интерфейсы программы
Интерфейсы
Пользователь
Программа
Операционная система
(Windows)
GUI
API
Win32 API – Windows Application Programming Interface
GUI – Graphical User Interface
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
button
кнопки
строка заголовка
title bar
My Window
строка меню
menu bar
X
X
(0,0)
(Left, Top)
Y
элемент управления
Height
Width
border
граница
status bar
строка состояния
cursor
курсор
(Right, Bottom)
клиентская
область
client area
Дочернее окно
Основной класс операционной системы
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
Шпион за действиями операционной
системы 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.Web
Services
Description
UI
HtmlControls
Discovery
WebControls
System.Windows.Forms
Form
Protocols
ComponentModel
System.Drawing
Caching
Security
Drawing2D
Printing
Configuration
SessionState
Imaging
Text
System.Data
System.Xml
ADO
SQL
XSLT
Design
SQLTypes
XPath
Serialization
System
Collections
IO
Security
Configuration
Net
ServiceProcess
Runtime
InteropServices
Diagnostics
Reflection
Text
Remoting
Globalization
Resources
Threading
Serialization
Основные классы пространства имен
System.Windows.Forms
Класс
Пояснение
Control
Базовый класс для всех окон !!!
Form
Класс форм - основное окно приложения
(контейнер для элементов управления)
Application
статический класс приложения
MessageBox статический класс окон сообщений
Timer
работа с таймером
ClipBoard
работа с буфером обмена
Menu
класс меню
MainMenu
основное меню
ContextMenu контекстное меню
Основными элементами
графического интерфейса
• Основными элементами графического интерфейса являются
специальные классы, называемые элементами управления
(ЭУ), которые обладают двумя особенностями:
– реализуют работу с различными типами окон ОС Windows;
– поддерживают работу в двух режимах:
•
режим проектирования (design mode), в котором с ними работает среда
разработки;
• режим выполнения (run mode), в котором выполняется взаимодействие
пользователей с ЭУ.
• Базовым классом для всех элементов управления является
класс Control, который содержит важные свойства, методы и
события, наследуемые всеми его потомками.
• Все другие классы элементов управления (ЭУ) являются
наследниками класса Control.
• Базовый класс Control содержит достаточно большое
количество элементов (79 свойств, 56 методов, 67 событий),
который доступен во всех производных классах.
Базовый класс Control элемент управления (окно)
• включает в качестве
поля номер окна hwnd
• используя hwnd и
WinAPI может управлять
своим окном
• получает и
обрабатывает события
от ОС Windows
• поддерживает два
режима работы:
– Design mode
– Run-time mode
• формирует новые
события для классов
пользователей клиентов
Class A : Control
long hwnd = 1024;
void Show ()
{ ::Show (hwnd, SC_MIN)}
// обработчики событий
hwnd = 1024;
Иерархия классов
элементов управления
• Классы всех ЭУ
наследуются от
класса Control и
могут использовать
его методы и
свойства.
Основные свойства класса Control
Свойства
Name
Left,Top,
Right,Bottom
Location
Описание
имя элемента для работы с ЭУ в системе разработки
координаты точек левого верхнего угла и правого нижнего угла (по умолчанию в пикселях
относительно окна родителя)
задать или получить координаты левого верхнего угла в виде объекта структуры Point (по
умолчанию в пикселях)
Height,Width высота и ширина окна (по умолчанию в пикселях)
размер окна в виде объекта структуры Size
Size
коллекция дочерних элементов управления, которые будут отображаться в текущем окне;
Controls
поддерживает интерфейс IList
ContextMenu ссылка на контекстное меню
ссылка на курсор
Cursor
ссылка на родительское окно (если оно есть)
Parent
заголовок окна
Text
используемый шрифт
Font
порядок перехода между ЭУ при нажатии клавиши Tab
TabIndex
может ли элемент управления прикрепляться к сторонам родительского окна (true, false);
Dock,
свойство DockStyle задает стороны, к которым должен прикрепляться ЭУ: Top, Bottom ,
DockStyle
Right , Left , Fill или None
связывание со стороной родительского окна; отличается от причаливания Dock тем, что не
Anchor
AnchorStyle прикрепляется к стороне, а находится на фиксированном расстоянии от нее; значения
AnchorStyle такие же, как и у DockStyle
фоновый цвет и цвет рисования
BackColor,
ForeColor
Основные методы и события класса
Control
Методы
Show()
Hide()
CreateGrafics
Update()
Invalidate()
События
Paint
GetFocuse,
LostFocuse
Click
MouseMove
KeyDown,
KeyUp
KeyPress
Описание
отображение окна на экране
срытие окна
создание объекта класса Graphics для рисования в окне
обновление содержания окна
объявление содержание окна испорченным, что заставляет ОС отправить
событие WM_PAINT о необходимости перерисовки содержания окна
Описание
событие о перерисовке пользовательской области окна
события о получении и потере окном фокуса ввода (данных с клавиатуры)
событие о щелчке левой клавишей «мыши» в области окна
событие о малом перемещении курсора «мыши» в окне
сообщения о нажатии и освобождении клавиши клавиатуры
сообщение о вводе символа с помощью клавиатуры