- •СОЗДАНИЕ ДИАЛОГОВОГО ПРИЛОЖЕНИЯ
- •AppVizard - Step 1
- •AppVizard - Step 2
- •AppVizard - Step 3
- •AppVizard - Step 4
- •СОЗДАНИЕ ДИАЛОГОВОГО ОКНА
- •Формирование ресурсов диалогового окна
- •Выбор языка интерфейса диалогового окна
- •Создание класса диалогового окна
- •Свойства диалогового окна
- •Style – стиль окна может иметь одно из следующих значений:
- •Resizing – изменяемая граница.
- •Немодальные диалоговые окна
- •Вывод диалогового окна на экран
Visual C++ |
Лекция 2 |
6 |
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 имеет вид:
Выжол Ю.А.
Visual C++ |
Лекция 2 |
7 |
virtual int DoModal() – открывает модальное диалоговое окно и если в открытом диалоговом окне нажата кнопка ОК или Cancel возвращает значения соответствующие константам IDOK и IDCANCEL соответственно; возвращает –1, если функция не может открыть диалоговое окно.
Обработать события закрытия диалогового окна IDD_OPTIONS можно с помощью, например, условного оператора и выводом сообщений с помощью функции AfxMessageBox :
if (rez==IDOK) AfxMessageBox("Вы нажали кнопку ОК"); else AfxMessageBox("Вы нажали кнопку Отмена");
Выжол Ю.А.