Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Технологии программирования. Программирование графических интерфейс

.pdf
Скачиваний:
3
Добавлен:
15.11.2022
Размер:
2.24 Mб
Скачать

Рис. 4.8

7.Добавитьвкласс CChildView обработку двойного щелчка.

8.Отладить и выполнить программу.

4.6. Пример создания и использования диалоговых окон

1.В рабочей области создать проект как приложение MFC AppWizard(exe). ОтключитьподдержкуархитектурыDocument/View.

2.Используя редактор ресурсов, создать шаблон диалогового окна и разместить на нем элементы управления. Элементы управления перемещаются на окно из панели инструментов Controls, которая появляется при активизации редактора ресурсов Dialog. Если вы не видите эту панель, выберите в меню Tools команду Customize. В появившемся диалоговом окне перейдите на вкладку Toolbars, отметьте кнопку Controls, как показано на рис. 4.9.

3.Находясь в редакторе ресурсов Dialog, щелкнуть правой кнопкой мыши на шаблоне окна. В появившемся контекстнозависимом меню выбрать ClassWizard. Мастер предложит вам

81

создать класс диалогового окна и связать его с шаблоном окна. Ответьте «да» и создайте класс CMyDialog.

Рис. 4.9

4. Используя мастер ClassWizard на вкладке Member Variables, создать для каждого управляющего элемента перемен-

ную – член класса CMyDialog (рис. 4.10). class CMyDialog : public CDialog

{

 

//………………………

 

public:

 

CListBox

m_List1;

CComboBox

m_Combo1;

CEdit

m_Edit1;

CButton

m_BtnInput;

CButton

m_BtnClear;

CButton

m_BtnAdd;

CButton

m_BtnMove;

//}}AFX_DATA

 

//…………

 

};

 

82

Рис. 4.10

5. Используя мастер ClassWizard на вкладке Message Maps,

создать для класса CMyDialog обработчик события

WM_INITDIALOG.

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

BOOL CMyDialog::OnInitDialog()

{

CDialog::OnInitDialog(); m_List1.AddString(“Иванов”); m_List1.AddString(“Иванов”); m_List1.AddString(“Петров”); m_List1.AddString(“Сидоров”); m_List1.AddString(“Котов”); m_List1.AddString(“Иванов”);

return TRUE;

}

83

7.Используя мастер ClassWizard на вкладке Message Maps, создать для класса CMyDialog обработчики событий от кнопок.

8.Написать код для этих обработчиков событий.

9.Добавить в меню команду «Диалог».

10.Записать обработчик этой команды

void CLab4_3App::OnDialog() {CMyDialog myDlg;

myDlg.DoModal();}

11. Отладить и выполнить программу.

4.7.Создание приложения типа Dialog based

1.В рабочей области lab04 создать проект lab4_4 как при-

ложение MFC AppWizard(exe).

2.На шаге 1 мастера MFC AppWizard выбрать тип приложения Dialog based. Этот тип приложения не поддерживает ар-

хитектуру Document/View (рис. 4.11).

Рис. 4.11

84

На шаге 2 снять отметки About box и ActiveX Controls (рис. 4.12).

Рис. 4.12

На шаге 3 оставьте отметки по умолчанию.

На шаге 4 мастер сообщает, что он создал два класса:

класс приложения CLab4_4App;

класс главного окна CLab4_4Dlg (рис. 4.13).

3. Если проанализировать созданный мастером код, можно увидеть, что главное окно – это диалоговое окно:

class CLab4_4Dlg : public CDialog

{

public:

CLab4_4Dlg(CWnd* pParent = NULL);

protected:

DECLARE_MESSAGE_MAP()

85

Рис. 4.13

};

BOOL CLab4_4App::InitInstance()

{

CLab4_4Dlg dlg; m_pMainWnd = &dlg;

int nResponse = dlg.DoModal();

return FALSE;

}

4.Разместить в диалоговом окне элементы управления. Элементы управления перемещаются на окно из панели инстру-

ментов Controls.

5.Используя мастер ClassWizard на вкладке Member Vari-

ables, создайте для каждого управляющего элемента перемен-

ную – член класса CLab5_4Dlg (рис. 4.14).

86

Рис. 4.14

6. Используя мастер ClassWizard на вкладке Message Maps, создать для класса CLab5_4Dlg обработчики событий от кнопок

(рис. 4.15, 4.16).

Рис. 4.15

87

Рис. 4.16

7.Написатье код для этих обработчиков событий.

8.Отладить и выполнить программу.

88

5. ДИАЛОГОВЫЕ ОКНА

5.1. Блоки диалога

Блоки диалога (dialog boxes) – это объекты Windows, ко-

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

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

Диалоговое окно – это дочернее окно главного окна приложения. В нем размещаются стандартные объекты – окна, которые называют элементами управления (controls).

Создание и использование блока диалога требуют одновременного наличия трех компонентов:

шаблона блока диалога;

программного кода, создающего и отображающего его на экране;

диалоговой процедуры, которая обслуживает взаимодействия пользователя с блоком диалога.

Один из способов создания шаблона блока диалога – редактирование файла ресурсов. (*.rc)

Другой способ заключается в использование какого-либо визуального средства, например редактора ресурсов.

Для этого надо в меню Insert/Resource выбрать пункт Dialog и нажать кнопку New. Появится диалоговое окно в режиме конструктора.

Можно задать идентификатор и имя диалога (заголовок диалогового окна).

89

С помощью панели Controls можно вставить в диалоговое окно элементы управления.

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

5.2. Класс CDialog и создание диалоговых окон

Библиотека MFC предоставляет специальный класс для создания и работы с блоками диалога – класс CDialog.

Основное назначение этого класса состоит в предоставлении интерфейса для управления блоками диалога. Использование класса CDialog позволяет создавать объекты обоих типов диалога – модальные и немодальные.

Для создания объекта диалогового класса на основе шаблона блока диалога, хранящегося в ресурсах, используется следующий конструктор:

CDialog :: CDialog (UINT nIDTemplate, CWnd

*pParentWnd=NULL);

nIDTemplate – номер идентификационного ресурса, pParentWnd – указатель на объект родителя или владельца,

которому принадлежит объект блока диалога.

Следующим шагом является создание собственно блока диалога Windows и его отображения.

Для создания модального блока диалога и присоединения его к объекту CDialog вызывается метод

virtual int CDialog :: DoModal();

90