logo
Учебное пособие визуального программирования

Диалоговые окна

При разработке Windows-приложений часто возникает необходимость вывода различных сообщений при обработки разных событий. Чаще всего сообщения выводятся в специальные диалоговые окна.

Диалоговое окно - это форма, обладающая некоторыми специальными характеристиками. Первая отличительная черта большинства диалоговых окон - то, что их размер изменять нельзя. Кроме того, в диалоговых окнах обычно не используются элементы управления, помещаемые в заголовке обычных форм: ControlBox, MinimizeBox и MaximizeBox. Для пользователя диалоговое окно в противоположность обычным является практически неизменяемым.

Диалоговые окна бывают модальные и немодальные. Если приложение открывает модальное окно, то работа приложения блокируется до тех пор, пока не будет закрыто модальное окно. Немодальные окна могут работать одновременно с породившим их главным окном приложения. Такие окна часто используются для "плавающих" инструментальных панелей, настройки различных параметров приложения, причем отсутствие модальности позволяет использовать в приложении измененные параметры, не закрывая окна настройки этих параметров.

Windows предоставляет множество функций, сообщений и предопределенных элементов управления, которые помогают создавать и управлять диалоговыми окнами, таким образом, облегчая процесс разработки интерфейса пользователя для прикладной программы.

Окно сообщения (message box) - специальное диалоговое окно, которое прикладная программа может использовать, чтобы показывать сообщения и приглашение для обычного ввода данных. Окно сообщения обычно содержит текстовое сообщение и одну или большее количество кнопок. Прикладная программа создает окно сообщения, используя специальный класс  MessageBox, определяя текст сообщения, заголовок, число и типы кнопок для показа.

Окно сообщения - модальное диалоговое окно и  Windows создает его, используя те же самые внутренние функции, что и DialogBox.

Для отображения диалогового окна MessageBox используется метод Show, передав ему через параметр  текст сообщения. По умолчанию в окне устанавливается кнопка ОК. Например:

MessageBox::Show("Hi! Student");

Выполнение этой инструкции приведет к открытию следующего окна:

Рисунок 3.4. – Окно сообщений

Вторым параметром в окне сообщений задается заголовок окна:

MessageBox::Show("Hi! Student!", "Welcome");

Окно с заголовком приведено на рисунке 3.5.

Рисунок 3.5. – Окно сообщений с заголовком

С помощью третьего параметра  можно указать, какие кнопки необходимо расположить в окне MessageBox. Этот параметр задается константами из перечисления MessageBoxButtons (Таблица 1).

Таблица 1

Константа

Кнопки, отображаемые в окне MessageBox

ОК

OK

OKCancel

OK, Cancel

YesNo

Yes, No

YesNoCancel

Yes, No, Cancel

RetryCancel

Retry, Cancel

AbortRetryIgnore

Abort, Retry, Ignore

Например, мы хотим выводить окно подтверждения на завершение работы приложения. В этом случае выберем набор кнопок Yes и No.

Метод MessageBox.Show может вернуть одно из нескольких значений перечисления DialogResult ( Таблица 2).

Таблица 2

Константа

Кнопка, при щелчке которой возвращается эта константа

Abort

Abort

Cancel

Cancel

Ignore

Ignore

No

No

None

Модальное диалоговое окно продолжает работать

OK

OK

Retry

Retry

Yes

Yes

Метод MessageBox::Show() возвращает результат выбора пользователя, который должен быть проанализирован и в зависимости от выбора приложение должно быть закрыто или нет. Тогда текст программы примет вид:

System::Windows::Forms::DialogResult rez= MessageBox::Show("Закрыть приложение?","Завершение работы", MessageBoxButtons::YesNo);

if (rez==System::Windows::Forms::DialogResult::Yes)this->Close();

Вид окна подтверждения приведен на рисунке 3.6.

Рисунок 3.6 – Окно подтверждения

С помощью четвертого параметра   метода MessageBox::Show можно выбрать один из нескольких значков для расположения в левой части диалогового окна. Он задается в виде константы константы перечисления MessageBoxIcon ( таблица 3).

Таблица 3

Константа

Значок

Asterisk, Information

Error, Stop

Exclamation, Warning

Question

None

Значок не отображается

Добавим в предыдущий пример создания окна подтверждения вывод значка вопроса:

System::Windows::Forms::DialogResult rez= MessageBox::Show("Закрыть приложение?","Завершение работы",

MessageBoxButtons::YesNo, MessageBoxIcon::Question);

Получим следующий вид окна:

Рисунок 3.7 - Окно подтверждения с выводом

вопросительной пиктограммы

Диалоговое окно можно создать не только на основе класса MessageBox, но и с использованием Windows -формы. Рассмотрим примеры проектирования простейших Windows-приложений.