Создание диалогового приложения и диалогового окна, страница 4

No fail create – отменяет сообщения об ошибках (по умолчанию - False).

No idle message – отменяет WM_ENTERIDLE сообщения  (по умолчанию - False).

Control – определяет, является ли диалоговое окно дочерним (по умолчанию - False).

Center mouse – при загрузке отображает диалоговое окно так, чтобы указатель мыши располагался в центре окна (по умолчанию - False).

Local edit – определяет, что средство управления окна редактирования в диалоговом окне будет использовать память в сегменте данных приложения (по умолчанию - False).

Tool window – используется для перемещаемых панелей инструментов. В заголовке используется меньший шрифт (по умолчанию - False).

Client edge – отображает утопленную границу диалогового окна (по умолчанию - False).

Static edge – отображает утопленную границу дочернего окна (по умолчанию - False).

Transparent – определяет прозрачный стиль окна (по умолчанию - False).

Control parent – позволяет пользователю перемещаться между дочерними формами с помощью клавиши Tab (по умолчанию - False).

No parent notify – отменяет WM_PARENTNOTIFY сообщения от дочернего окна к родительскому (по умолчанию - False).

Немодальные диалоговые окна

Большинство диалоговых окон, которые приходится включать в состав приложения, относятся к так называемым модальным окнам. Модальное окно выведено всегда поверх всех остальных окон на экране. Пользователь должен поработать в этом окне и обязательно закрыть его прежде, чем приступить к работе в любом другом окне этого же приложения. Примером может служить окно, которое открывается при выборе команды File Open любого приложения Windows.

Немодальное диалоговое окно позволяет пользователю, не закончив работы с ним, "перепрыгнуть" в другое окно приложения, сделать там нечто и затем снова вернуться в немодальное окно и продолжить операцию. Типичными немодальными окнами являются те, которые открываются при отработке команд Edit Find (Правка Поиск) и Edit Replace (Правка Замена) во многих приложениях Windows.

Организация работы с немодальным окном намного сложнее организации работы с модальным. Программировать работу с таким объектом, как диалоговое окно, - экземпляром соответствующего класса – нужно очень аккуратно. Как правило, они создаются оператором new, а удаляются – оператором delete при обработке щелчка мышью на кнопке ОК или Cancel. Разработчику придется перегрузить большинство функций-членов класса диалогового окна. Короче, прежде, чем приступать к программированию с немодальными окнами, нужно достаточно хорошо освоить приемы программирования модальных окон.

Вывод диалогового окна на экран

Для вывода диалогового окна, например IDD_OPTIONS, на экран нужно выполнить следующие операции:

Ø  В заголовке файла класса диалогового окна, из которого вы хотите открыть диалоговое окно IDD_OPTIONS, нужно объявить заголовочный файл Options.h. Синтаксис объявления заголовочного файла имеет вид:

#include "имя заголовочного файла" например:

#include "Options.h"

Ø  Создать объект, с помощью которого вы хотите вывести диалоговое окно на экран, например кнопку IDC_OPTIONS

Ø  Создать процедуру обработки события, например, щелчка на кнопке IDC_OPTIONS. Для этого сделайте двойной щелчок на кнопке в режиме конструктора. В открывшемся диалоговом окне Add Member Function щёлкните на кнопке OK.

Ø  В процедуре обработки события щелчка на кнопке IDC_OPTIONS, нужно создать экземпляр класса диалогового окна, синтаксис которого имеет вид:

<имя класса> <имя экземпляра класса>; например:

COptions dlg;

Ø  отобразить диалоговое окно IDD_OPTIONS на экране с помощью функции DoModal, синтаксис команды имеет вид:

[<переменная>=]<имя экземпляра класса> . DoModal() например:

int rez = dlg.DoModal();

Синтаксис функции DoModal имеет вид:

virtual int DoModal() – открывает модальное диалоговое окно и если в открытом диалоговом окне нажата кнопка ОК или Cancel возвращает значения соответствующие константам IDOK и IDCANCEL соответственно; возвращает –1, если функция не может открыть диалоговое окно.

Ø  Обработать события закрытия диалогового окна IDD_OPTIONS можно с помощью, например, условного оператора и выводом сообщений с помощью функции AfxMessageBox :

if (rez==IDOK) AfxMessageBox("Вы нажали кнопку ОК");

else AfxMessageBox("Вы нажали кнопку Отмена");

События в диалоговом окне

Методы диалогового окна