Разделы презентаций


win_mesg.PPT

Содержание

08/13/2019СодержаниеПонятие окна, разновидности оконХарактеристики оконСообщения, иерархия сообщенийМеханизм обработки сообщений

Слайды и текст этой презентации

Слайд 1Окна и сообщения.
Отвагин Алексей Владимирович, доцент каф. ЭВМ, к.т.н., а.

505-5

Окна и сообщения.Отвагин Алексей Владимирович, доцент каф. ЭВМ, к.т.н., а. 505-5

Слайд 208/13/2019
Содержание
Понятие окна, разновидности окон
Характеристики окон
Сообщения, иерархия сообщений
Механизм обработки сообщений

08/13/2019СодержаниеПонятие окна, разновидности оконХарактеристики оконСообщения, иерархия сообщенийМеханизм обработки сообщений

Слайд 308/13/2019
Понятие окна
Приложения пользователя и элементы управления отображаются в интерфейсе через

окна
Окно – (прямоугольная) область экрана, предназначенная для сбора и/или вывода

информации от пользователя
Окно связано с определенным классом, реализующим его логику поведения
Окна идентифицируются и управляются менеджером окон
08/13/2019Понятие окнаПриложения пользователя и элементы управления отображаются в интерфейсе через окнаОкно – (прямоугольная) область экрана, предназначенная для

Слайд 408/13/2019
Элементы окна

08/13/2019Элементы окна

Слайд 508/13/2019
Разновидности окон
Окна приложений
Элементы управления
Диалоги
Окна многодокументного интерфейса

08/13/2019Разновидности оконОкна приложенийЭлементы управленияДиалогиОкна многодокументного интерфейса

Слайд 608/13/2019
Создание окна
using System;
using System.Windows.Forms;
class MyFirstApp {
static void Main() {
Form

form = new Form(); Application.Run(form);
}
}

08/13/2019Создание окнаusing System;using System.Windows.Forms;class MyFirstApp {static void Main() { Form form = new Form(); Application.Run(form); }}

Слайд 708/13/2019
Характеристики окна
Название окна
Размер и позиция окна на экране
Оформление окна (стиль

рамки, кнопки, цветовые характеристики)
Элементы управления
Иконка, шрифт, курсор

08/13/2019Характеристики окнаНазвание окнаРазмер и позиция окна на экранеОформление окна (стиль рамки, кнопки, цветовые характеристики)Элементы управленияИконка, шрифт, курсор

Слайд 808/13/2019
Иерархия окон
Окна располагаются на экране иерархически
Позиция окна в иерархии определяется

z-порядком
Окна потомков всегда находятся перед окном родителя
Сиблинги – окна, созданные

одним родителем
08/13/2019Иерархия оконОкна располагаются на экране иерархическиПозиция окна в иерархии определяется z-порядкомОкна потомков всегда находятся перед окном родителяСиблинги

Слайд 908/13/2019
Окно - контейнер
public Button button1;
public Form1() {
button1 =

new Button();
button1.Size = new Size(40, 40);
button1.Location = new

Point(30, 30);
button1.Text = "Click me";
this.Controls.Add(button1);
}
08/13/2019Окно - контейнерpublic Button button1; public Form1() { button1 = new Button(); button1.Size = new Size(40, 40);

Слайд 1008/13/2019
Сообщения
Способ реакции интерфейса на происходящие вне и внутри его события
Обработка

сообщений возлагается на оконную процедуру
Передача сообщений, их создание и управление

очередью возлагается на механизмы интерфейса
08/13/2019СообщенияСпособ реакции интерфейса на происходящие вне и внутри его событияОбработка сообщений возлагается на оконную процедуруПередача сообщений, их

Слайд 1108/13/2019
Делегаты Windows
Классы реализации механизма обработки событий
Содержат ссылку на метод
Делегат принимает

ссылки, соответствующие его синтаксису
Поддерживает мультикаст

delegate void EventHandler(object sender, EventArgs e);


08/13/2019Делегаты WindowsКлассы реализации механизма обработки событийСодержат ссылку на методДелегат принимает ссылки, соответствующие его синтаксисуПоддерживает мультикастdelegate void EventHandler(object

Слайд 1208/13/2019
Добавление обработчика сообщений
private void button1_Click(object sender, System.EventArgs e)
{
}
button1.Click +=

new EventHandler(button1_Click);

08/13/2019Добавление обработчика сообщенийprivate void button1_Click(object sender, System.EventArgs e){} button1.Click += new EventHandler(button1_Click);

Слайд 1308/13/2019
Иерархия сообщений
System.EventArgs
System.Windows.Forms.PaintEventArgs
System.Windows.Forms.ControlEventArgs
System.Windows.Forms.MouseEventArgs
System.Windows.Forms.DragEventArgs
System.Windows.Forms.FormClosedEventArgs
System.Windows.Forms.KeyEventArgs
System.Windows.Forms.ScrollEventArgs
System.Drawing.Printing.PrintPageEventArgs
System.Windows.Forms.Integration.ChildChangedEventArgs

08/13/2019Иерархия сообщенийSystem.EventArgsSystem.Windows.Forms.PaintEventArgsSystem.Windows.Forms.ControlEventArgs System.Windows.Forms.MouseEventArgsSystem.Windows.Forms.DragEventArgsSystem.Windows.Forms.FormClosedEventArgsSystem.Windows.Forms.KeyEventArgs System.Windows.Forms.ScrollEventArgsSystem.Drawing.Printing.PrintPageEventArgsSystem.Windows.Forms.Integration.ChildChangedEventArgs

Слайд 1408/13/2019
Создание событий на базе EventArgs
public class AlarmEventArgs : EventArgs
{

private readonly int nrings = 0;
private readonly bool snoozePressed

= false;
//Constructor.
public AlarmEventArgs(bool snoozePressed, int nrings)
{
this.snoozePressed = snoozePressed;
this.nrings = nrings;
}
//Properties.
public string AlarmText { ... }
public int NumRings { ... }
public bool SnoozePressed{ ... }
}
08/13/2019Создание событий на базе EventArgspublic class AlarmEventArgs : EventArgs { private readonly int nrings = 0; private

Слайд 1508/13/2019
Реализация события
public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);
public class AlarmClock

{
...
public event AlarmEventHandler Alarm;
protected virtual void OnAlarm(AlarmEventArgs e)

{
if (Alarm != null) Alarm(this, e);
}
}
public class AlarmClock {
...
public void Start() {
...
System.Threading.Thread.Sleep(300);
AlarmEventArgs e = new AlarmEventArgs(false, 0);
OnAlarm(e);
}
}

08/13/2019Реализация событияpublic delegate void AlarmEventHandler(object sender, AlarmEventArgs e);public class AlarmClock {... public event AlarmEventHandler Alarm; protected virtual

Слайд 1608/13/2019
Обработка сообщений

08/13/2019Обработка сообщений

Слайд 1708/13/2019
Дескриптор сообщения
typedef struct {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;

} MSG, *PMSG;


дескриптор окна
тип сообщения
первый параметр

второй параметр
момент времени
координаты мыши

08/13/2019Дескриптор сообщенияtypedef struct { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG, *PMSG; дескриптор окна тип сообщения

Слайд 1808/13/2019
Сообщения в очереди
Помещаются в системную очередь сообщений
Вызываются событиями интерфейса, например,

пользовательским вводом
Функции для работы с сообщениями в очереди:
PostMessage(), PostThreadMessage()
GetMessage(), PeekMessage(),

DispatchMessage()
GetMessageTime(), GetMessagePos()
WaitMessage()
SendMessageExtraInfo(), GetMessageExtraInfo()

08/13/2019Сообщения в очередиПомещаются в системную очередь сообщенийВызываются событиями интерфейса, например, пользовательским вводомФункции для работы с сообщениями в

Слайд 1908/13/2019
Сообщения вне очереди
Направляются непосредственно оконной процедуре
Вызываются системой, например, событие создания

окна, получение фокуса и т.д.
Функции для работы с сообщениями вне

очереди:
SendMessage(), SendMessageCallback()
BroadcastSystemMessage(), BroadcastSystemMessageEx()
SendMessageTimeout()
08/13/2019Сообщения вне очередиНаправляются непосредственно оконной процедуреВызываются системой, например, событие создания окна, получение фокуса и т.д.Функции для работы

Слайд 2008/13/2019
Основной цикл обработки сообщений
MSG msg;
BOOL bRet;
while( (bRet = GetMessage(&msg, NULL,

0, 0 )) != 0) {
if (bRet ==

-1) {
// ошибка
}
else {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

Функция GetMessage()возвращает FALSE, когда из очереди поступает WM_QUIT
TranslateMessage (&msg) передает структуру msg обратно Windows для трансляции клавиатуры

08/13/2019Основной цикл обработки сообщенийMSG msg;BOOL bRet;while( (bRet = GetMessage(&msg, NULL, 0, 0 )) != 0) {

Слайд 2108/13/2019
Оконная процедура
Обрабатывает все сообщения, поступающие в окно от устройств

ввода или системы
switch (iMsg) {
case WM_CREATE : [обработка WM_CREATE]
return 0

;
case WM_PAINT : [обработка WM_PAINT]
return 0 ;
case WM_DESTROY : [обработка WM_DESTROY]
return 0 ;
}
return DefWindowProc (hwnd, iMsg, wParam, lParam);
08/13/2019Оконная процедура Обрабатывает все сообщения, поступающие в окно от устройств ввода или системыswitch (iMsg) {	case WM_CREATE :

Слайд 2208/13/2019
Порядок событий в окне
Form.Load – загрузка формы
Form.Activated – активация

формы
Form.Shown – первый вывод формы на экран

Form.FormClosing – закрытие формы
Form.FormClosed

– форма закрыта
Form.Deactivate – деактивация формы
08/13/2019Порядок событий в окне Form.Load – загрузка формыForm.Activated – активация формыForm.Shown – первый вывод формы на экранForm.FormClosing

Слайд 2308/13/2019
События, связанные с фокусом
Control.Enter – получение фокуса
Control.GotFocus – получение

фокуса
Control.Leave – потеря фокуса
Control.Validating – проверка данных
Control.Validated – завершение проверки
Control.LostFocus

– потеря фокуса
08/13/2019События, связанные с фокусом Control.Enter – получение фокусаControl.GotFocus – получение фокусаControl.Leave – потеря фокусаControl.Validating – проверка данныхControl.Validated

Слайд 2408/13/2019
Диалоговые окна
Временные окна, создаваемые с целью приема пользовательского ввода
Строятся

на основе шаблона окна – перечня элементов управления с информацией

об их размещении
Предопределенные окна –диалоги для выполнения часто используемых операций, общих для всех приложений
Диалоги жестко привязаны к владельцу, находясь в z-порядке над ним
08/13/2019Диалоговые окна Временные окна, создаваемые с целью приема пользовательского вводаСтроятся на основе шаблона окна – перечня элементов

Слайд 2508/13/2019
Виды диалоговых окон
Модальное – требует ввода информации или отмены

окна, прежде чем приложение продолжит работу.
Dialog.ShowDialog()
Немодальное – позволяет вводить

информацию и переключаться на основное окно приложения без закрытия.
Dialog.Show()
Модальные окна более просты в управлении
08/13/2019Виды диалоговых окон Модальное – требует ввода информации или отмены окна, прежде чем приложение продолжит работу. 	Dialog.ShowDialog()Немодальное

Слайд 2608/13/2019
Вывод диалогового окна
private void button1_Click(object sender, System.EventArgs e) {
Form

dlg1 = new Form();
dlg1.ShowDialog();
}

08/13/2019Вывод диалогового окна private void button1_Click(object sender, System.EventArgs e) {Form dlg1 = new Form();dlg1.ShowDialog();}

Слайд 2708/13/2019
Получение данных через свойства
Класс свойства, связанный с элементом управления
public

string Name {
get {
return nameTextBox.Text;
}
set {

nameTextBox.Text = value;
}
}
08/13/2019Получение данных через свойства Класс свойства, связанный с элементом управленияpublic string Name { get { return nameTextBox.Text;

Слайд 2808/13/2019
Получение данных в диалоге
Вывод диалога
private void ShowMyDialog() {
Form1 dlg

= new Form1(); dlg.ShowDialog();
if (dlg.DialogResult == DialogResult.OK) {
MessageBox.Show (dlg.Name);

}
}
08/13/2019Получение данных в диалоге Вывод диалогаprivate void ShowMyDialog() {	Form1 dlg = new Form1(); dlg.ShowDialog(); 	if (dlg.DialogResult ==

Слайд 2908/13/2019
Обработка кнопок диалога
void okButton_Click(object sender, EventArgs e) {
this.DialogResult =

DialogResult.OK;
this.Close();
}
void cancelButton_Click(object sender, EventArgs e) {
this.DialogResult = DialogResult.Cancel;
this.Close();
}

08/13/2019Обработка кнопок диалога void okButton_Click(object sender, EventArgs e) {	this.DialogResult = DialogResult.OK;	this.Close();}void cancelButton_Click(object sender, EventArgs e) {	this.DialogResult =

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика