Скачать презентацию Основы программирования для многозадачных операционных систем Павловская Т Скачать презентацию Основы программирования для многозадачных операционных систем Павловская Т

lec_08.ppt

  • Количество слайдов: 29

Основы программирования для многозадачных операционных систем ©Павловская Т. А. (СПб. ГУ ИТМО) 1 Основы программирования для многозадачных операционных систем ©Павловская Т. А. (СПб. ГУ ИТМО) 1

Основные особенности Windows n Многозадачность n Независимость программ от аппаратуры n Стандартный графический интерфейс Основные особенности Windows n Многозадачность n Независимость программ от аппаратуры n Стандартный графический интерфейс с пользователем n Поддержка виртуального адресного пространства для каждого приложения. n Возможность обмена данными между приложениями n Возможность запуска старых программ ©Павловская Т. А. (СПб. ГУ ИТМО) 2

Событийно-управляемое программирование n Структура программы, управляемой событиями: ©Павловская Т. А. (СПб. ГУ ИТМО) 3 Событийно-управляемое программирование n Структура программы, управляемой событиями: ©Павловская Т. А. (СПб. ГУ ИТМО) 3

Структура Windows-приложения ©Павловская Т. А. (СПб. ГУ ИТМО) 4 Структура Windows-приложения ©Павловская Т. А. (СПб. ГУ ИТМО) 4

Приложение: консольное или Windows? class A { public static void Main() { System. Windows. Приложение: консольное или Windows? class A { public static void Main() { System. Windows. Forms. Message. Box. Show("Hello!"); } } // Необходимо добавить ссылку на System. Windows. Forms // (Add Reference…) ©Павловская Т. А. (СПб. ГУ ИТМО) 5

Помощь. NET при создании приложений n Среда Visual Studio. NET содержит удобные средства разработки Помощь. NET при создании приложений n Среда Visual Studio. NET содержит удобные средства разработки Windows-приложений, например: n n n создание шаблонов приложения и форм; создание заготовок обработчиков событий. Библиотека классов. NET включает пространство имен System. Windows. Forms, содержащее огромное количество типов - строительных блоков Windows-приложений, например: n Application n Button, Check. Box, Data. Grid, Group. Box, List. Box, Picture. Box n Form n Color. Dialog, File. Dialog, Font. Dialog n Menu, Main. Menu, Menu. Item n Clipboard, Help, Timer, Screen, Cursors n Status. Bar, Tool. Bar, Scroll. Bar ©Павловская Т. А. (СПб. ГУ ИТМО) 6

Элементы управления Windows. Forms ©Павловская Т. А. (СПб. ГУ ИТМО) 7 Элементы управления Windows. Forms ©Павловская Т. А. (СПб. ГУ ИТМО) 7

Создание Windows-приложения n новый проект (File New Project) n шаблон Windows Application ©Павловская Т. Создание Windows-приложения n новый проект (File New Project) n шаблон Windows Application ©Павловская Т. А. (СПб. ГУ ИТМО) 8

Создание Windows-приложения n Процесс создания Windows-приложения состоит из двух основных этапов: n n n Создание Windows-приложения n Процесс создания Windows-приложения состоит из двух основных этапов: n n n визуальное проектирование, то есть задание внешнего облика приложения определение поведения приложения путем написания процедур обработки событий. Визуальное проектирование заключается в помещении на форму компонентов (элементов управления) и задании их свойств и свойств самой формы. ©Павловская Т. А. (СПб. ГУ ИТМО) 9

Окно свойств n View Properties Window Задание свойств выполняется либо выбором имеющихся в списке Окно свойств n View Properties Window Задание свойств выполняется либо выбором имеющихся в списке вариантов, либо вводом требуемого значения с клавиатуры. Если около имени свойства стоит значок +, это означает, что свойство содержит другие свойства. Они становятся доступными после щелчка на значке. ©Павловская Т. А. (СПб. ГУ ИТМО) 10

Шаблон Windows-приложения using System; using System. Windows. Forms; namespace Windows. Application 1 { public Шаблон Windows-приложения using System; using System. Windows. Forms; namespace Windows. Application 1 { public class Form 1 : Form { private System. Windows. Forms. Text. Box text. Box 1; // 1 private System. Windows. Forms. Button button 1; // 2 private System. Component. Model. Container components = null; public Form 1() { Initialize. Component(); } protected override void Dispose( bool disposing ) { … } #region Windows Form Designer generated code private void Initialize. Component() { this. components = new System. Component. Model. Container(); this. Size = new System. Drawing. Size(300, 300); this. Text = "Form 1"; … } #endregion static void Main() { Application. Run(new Form 1()); } }} ©Павловская Т. А. (СПб. ГУ ИТМО) 11

Пример вставки в Initialize. Component this. text. Box 1 = new System. Windows. Forms. Пример вставки в Initialize. Component this. text. Box 1 = new System. Windows. Forms. Text. Box(); // 3 this. button 1 = new System. Windows. Forms. Button(); // 4 this. Suspend. Layout(); // 5 // text. Box 1 this. text. Box 1. Location = new System. Drawing. Point(24, 16); this. text. Box 1. Name = "text. Box 1"; this. text. Box 1. Size = new System. Drawing. Size(240, 20); this. text. Box 1. Tab. Index = 0; this. text. Box 1. Text = "text. Box 1"; this. text. Box 1. Key. Press += new // 6 System. Windows. Forms. Key. Press. Event. Handler(this. text. Box 1_Key. Press); // button 1 this. button 1. Location = new System. Drawing. Point(192, 80); this. button 1. Name = "button 1"; this. button 1. Tab. Index = 1; this. button 1. Text = "button 1"; this. button 1. Click += new // 7 System. Event. Handler(this. button 1_Click); ©Павловская Т. А. (СПб. ГУ ИТМО) 12

// Form 1 this. Auto. Scale. Base. Size = new System. Drawing. Size(5, 13); // Form 1 this. Auto. Scale. Base. Size = new System. Drawing. Size(5, 13); this. Client. Size = new System. Drawing. Size(292, 126); this. Controls. Add(this. button 1); // 8 this. Controls. Add(this. text. Box 1); // 9 this. Name = "Form 1"; this. Text = "Form 1"; this. Resume. Layout(false); // 10 } #endregion … private void button 1_Click(object sender, System. Event. Args e) { // 11 } private void text. Box 1_Key. Press(object sender, System. Windows. Forms. Key. Press. Event. Args e) { // 12 } ©Павловская Т. А. (СПб. ГУ ИТМО) 13

Размещение компонента на форме n Создать экземпляр соответствующего класса n n Настроить свойства экземпляра, Размещение компонента на форме n Создать экземпляр соответствующего класса n n Настроить свойства экземпляра, в том числе зарегистрировать обработчик событий n n (код создается автоматически при размещении компонента на заготовке формы) (через окно свойств) Поместить экземпляр в коллекцию компонентов формы n (автоматически) ©Павловская Т. А. (СПб. ГУ ИТМО) 14

Определение поведения программы n Определение поведения программы начинается с принятия решений, какие действия должны Определение поведения программы n Определение поведения программы начинается с принятия решений, какие действия должны выполняться при щелчке на кнопках, вводе текста, выборе пунктов меню и т. д. (по каким событиям будут выполняться действия, реализующие функциональность программы). n Заготовка шаблона обработчика события формируется двойным щелчком на поле, расположенном справа от имени соответствующего события на вкладке Events окна свойств, при этом появляется вкладка окна редактора кода с заготовкой соответствующего обработчика. n Для каждого класса определен свой набор событий, на которые он может реагировать. ©Павловская Т. А. (СПб. ГУ ИТМО) 15

Часто используемые события n Activated — получение формой фокуса ввода; n Click, Double. Click Часто используемые события n Activated — получение формой фокуса ввода; n Click, Double. Click — одинарный и двойной щелчки мышью; n Closed — закрытие формы; n Load — загрузка формы; n Key. Down, Key. Up — нажатие и отпускание любой клавиши и их сочетаний; n Key. Press — нажатие клавиши, имеющей ASCII-код; n Mouse. Down, Mouse. Up — нажатие и отпускание кнопки мыши; n Mouse. Move — перемещение мыши; n Paint — возникает при необходимости прорисовки формы. ©Павловская Т. А. (СПб. ГУ ИТМО) 16

Примеры обработчиков событий private void Form 1_Load(object sender, Event. Args e) { rnd = Примеры обработчиков событий private void Form 1_Load(object sender, Event. Args e) { rnd = new Random(); i = rnd. Next(max); } private void Exit_Click(object sender, Event. Args e) { // имя пункта меню - Exit Close(); // или: // Application. Exit(); } ©Павловская Т. А. (СПб. ГУ ИТМО) 17

Класс Control n Класс Control является базовым для всех отображаемых элементов и реализует их Класс Control n Класс Control является базовым для всех отображаемых элементов и реализует их базовую функциональность. n Он содержит методы обработки ввода пользователя с помощью мыши и клавиатуры, определяет размер, положение, цвет фона и другие характеристики элемента. n Основные элементы управления (потомки Control): n метка Label n Кнопка Button n Поле ввода Text. Box n Меню Main. Menu и Context. Menu n Флажок Check. Box n Переключатель Radio. Button n Панель Group. Box n Список List. Box ©Павловская Т. А. (СПб. ГУ ИТМО) 18

Виды окон n Модальное окно не позволяет пользователю переключаться на другие окна того же Виды окон n Модальное окно не позволяет пользователю переключаться на другие окна того же приложения, пока не будет завершена работа с текущим окном. n В виде модальных обычно оформляют диалоговые окна, требующие от пользователя ввода какой-либо информации. n Немодальное окно позволяет переключаться на другие окна того же приложения. Немодальные окна являются, как правило, информационными. Они используются в тех случаях, когда пользователю желательно предоставить свободу выбора — оставлять на экране какую-либо информацию или нет. n Каждое приложение содержит одно главное окно. Класс главного окна приложения содержит точку входа в приложение (статический метод Main). При закрытии главного окна приложение завершается. n Вид окна определяет его функциональность, например, окно с одинарной рамкой не может изменять свои размеры. ©Павловская Т. А. (СПб. ГУ ИТМО) 19

Диалоговые окна n Диалоговое окно характеризуется: n n отсутствием кнопок восстановления и свертывания в Диалоговые окна n Диалоговое окно характеризуется: n n отсутствием кнопок восстановления и свертывания в правом верхнем углу заголовка формы (Maximize. Box = False, Minimized. Box = False); n наличием кнопок наподобие OK, подтверждающей введенную информацию, и Cancel, отменяющей ввод пользователя, при нажатии которых окно закрывается (Accept. Button = имя_кнопки_OK, Cancel. Button = имя_кнопки_Cancel); n n неизменяемыми размерами (Form. Border. Style = Fixed. Dialog); установленным значением свойства Dialog. Result для кнопок, при нажатии которых окно закрывается. Для отображения диалогового окна следует создать экземпляр объекта соответствующей формы, а затем вызвать для этого объекта метод Show. Dialog. ©Павловская Т. А. (СПб. ГУ ИТМО) 20

Пример отображения диалогового окна private void menu. Item 1_Click( object sender, Event. Args e Пример отображения диалогового окна private void menu. Item 1_Click( object sender, Event. Args e ) { Form 2 f = new Form 2(); // создание экземпляра класса окна if ( f. Show. Dialog() == Dialog. Result. OK ) // отображение окна label 1. Text = f. Info; } private void menu. Item 2_Click( object sender, Event. Args e ) { Close(); // закрытие главного окна } ©Павловская Т. А. (СПб. ГУ ИТМО) 21

Пример диалогового окна public class Form 2 : Form { private Label label 1; Пример диалогового окна public class Form 2 : Form { private Label label 1; private Text. Box text. Box 1; private Button btn. OK; private Button btn. Cancel; private Container components = null; public string Info // свойство для передачи информации из окна { get { return text. Box 1. Text; } } . . . ©Павловская Т. А. (СПб. ГУ ИТМО) 22

Список List. Box n Список служит для представления перечней элементов, в которых пользователь может Список List. Box n Список служит для представления перечней элементов, в которых пользователь может выбрать одно или несколько значений n Чаще всего используются списки строк, но можно выводить и произвольные изображения. Список может состоять из нескольких столбцов и быть отсортированным в алфавитном порядке n Элементы списка нумеруются с нуля. Они хранятся в свойстве Items, представляющем собой коллекцию. n В Items можно добавлять элементы с помощью методов Add, Add. Range и Insert. n Для удаления элементов служат методы Remove и Remove. At ©Павловская Т. А. (СПб. ГУ ИТМО) 23

Пример использования списка Приложение отображает в списке типа List. Box строки, считанные из входного Пример использования списка Приложение отображает в списке типа List. Box строки, считанные из входного файла, а затем по щелчку на кнопке Запись выводит выделенные пользователем строки в выходной файл. ©Павловская Т. А. (СПб. ГУ ИТМО) 24

Фрагменты приложения public class Form 1 : Form { private List. Box list. Box Фрагменты приложения public class Form 1 : Form { private List. Box list. Box 1; private Button button 1; . . . private void Form 1_Load(object sender, Event. Args e) { try { Stream. Reader f = new Stream. Reader( "input. txt" ); string buf; while ( ( buf = f. Read. Line() ) != null ) // чтение из файла list. Box 1. Items. Add(buf); // занесение в список } catch ( File. Not. Found. Exception exc ) { Message. Box. Show( exc. Message ); return; } catch { Message. Box. Show( “Неопознанное искл-е" ); return; } } ©Павловская Т. А. (СПб. ГУ ИТМО) 25

private void button 1_Click(object sender, Event. Args e) { Stream. Writer f = new private void button 1_Click(object sender, Event. Args e) { Stream. Writer f = new Stream. Writer( "output. txt" ); foreach ( string item in list. Box 1. Selected. Items ) f. Write. Line(item); // запись в файл f. Close(); } ©Павловская Т. А. (СПб. ГУ ИТМО) 26

Введение в графику n Для вывода линий, геометрических фигур, текста и изображений необходимо создать Введение в графику n Для вывода линий, геометрических фигур, текста и изображений необходимо создать экземпляр класса Graphics, описанного в пространстве имен System. Drawing. Существуют различные способы создания этого объекта. n Первый способ состоит в том, что ссылку на объект Graphics получают из параметра Paint. Event. Args, передаваемого в обработчик события Paint, возникающего при необходимости прорисовки формы или элемента управления: private void Form 1_Paint( object sender, Paint. Event. Args e ) { Graphics g = e. Graphics; // использование объекта } ©Павловская Т. А. (СПб. ГУ ИТМО) 27

n Второй способ — использование метода Create. Graphics, описанного в классах формы и элемента n Второй способ — использование метода Create. Graphics, описанного в классах формы и элемента управления: Graphics g; g = this. Create. Graphics(); n Третий способ — создание объекта с помощью объекта-потомка Image. Этот способ используется для изменения существующего изображения: Bitmap bm = new Bitmap( "d: \picture. bmp" ); Graphics g = Graphics. From. Image( bm ); n После создания объекта типа Graphics его можно применять для вывода линий, геометрических фигур, текста и изображений. Основными объектами, которые при этом используются, являются объекты классов Pen (рисование линий и контуров геометрических фигур), Brush (заполнение областей), Font (вывод текста) и Color (цвет). ©Павловская Т. А. (СПб. ГУ ИТМО) 28

using System; Пример using System. Drawing; using System. Windows. Forms; namespace Windows. Application 1 using System; Пример using System. Drawing; using System. Windows. Forms; namespace Windows. Application 1 { public partial class Form 1 : Form { public Form 1() { Initialize. Component(); } private void Form 1_Paint( object sender, Paint. Event. Args e ) { using ( Graphics g = e. Graphics) { // 1 using ( Pen pen = new Pen( Color. Red ) ) { // 2 g. Draw. Line( pen, 0, 0, 200, 100 ); g. Draw. Ellipse( pen, new Rectangle(50, 100, 150) ); } string s = "Sample Text"; Font font = new Font( "Arial", 18 ); // 3 Solid. Brush brush = new Solid. Brush( Color. Black ); // 4 float x = 100. 0 F; float y = 20. 0 F; g. Draw. String( s, font, brush, x, y ); font. Dispose(); // 5 brush. Dispose(); // 6 }}}} ©Павловская Т. А. (СПб. ГУ ИТМО) 29