непосредственно от базового класса CDialog.

Каждая диалоговая панель обычно содержит несколько органов управления. Работая с диалоговой панелью, пользователь взаимодействует с этими органами управления – нажимает кнопки, вводит текст, выбирает элементы списков. В результате генерируются соответствующие сообщения, которые должны быть обработаны классом диалоговой панели.

Так как класс диалоговой панели обрабатывает сообщения, то он содержит таблицу сообщений и соответствующие методы обработчики сообщений.

Чтобы создать модальную диалоговую панель, сначала необходимо создать объект определенного вами класса диалоговой панели, а затем вызвать метод DoModal, определенный в классе CDialog.

Процедура создания немодальной диалоговой панели несколько другая. Для этого используется метод Create класса CDialog. Мы рассмотрим создание немодальных диалоговых панелей позже.

Приложение с модальной диалоговой панелью

В этом разделе мы расскажем о том, как создать простейшее приложение с единственной диалоговой панелью. Диалоговая панель будет содержать несколько кнопок, статическое текстовое поле и поле редактирования. В следующей главе мы расскажем, как создать более сложное приложение с главной диалоговой панелью при помощи средств автоматизированного проектирования MFC AppWizard и ClassWizard.

Создайте новый проект под названием MFDialog. В качестве типа приложения выберите из списка Type строку Application (рис. 4.1). Наберите в редакторе исходный текст приложения и сохраните его в файле MFDialog.cpp (листинг 2.13).

Листинг 2.13. Файл MFDialog.cpp

// Включаемый файл для MFC

#include <afxwin.h>

#include 'resource.h'

//=====================================================

// Класс CMFDialogApp – главный класс приложения

//=====================================================

class CMFDialogApp : public CWinApp {

public:

 // Мы будем переопределять метод InitInstance,

 // предназначенный для инициализации приложения

 virtual BOOL InitInstance();

};

// Создаем объект приложение класса CMFDialogApp

CMFDialogApp MFDialogApp;

//=====================================================

// Класс CMyDialog – класс диалоговой панели

//=====================================================

class CMyDialog : public CDialog {

public:

 CMyDialog();

 CString m_Text;

protected:

 virtual void DoDataExchange(CDataExchange* pDX);

 // Обработчики сообщений от кнопок диалоговой панели

 afx_msg void OnDefault();

 virtual void OnCancel();

 virtual void OnOK();

 // Макрокоманда необходима, так как класс

 // CMyDialog обрабатывает сообщения от органов

 // управления диалоговой панели

 DECLARE_MESSAGE_MAP()

};

// Конструктор клаасса CMyDialog

CMyDialog::CMyDialog() : CDialog(CMyDialog::IDD) {

 // Инициализируем переменную m_Text

 m_Text = '';

}

//=====================================================

// Метод DoDataExchange класса CMyDialog

//=====================================================

void CMyDialog::DoDataExchange(CDataExchange* pDX) {

 CDialog::DoDataExchange(pDX);

 DDX_Text(pDX, IDC_EDIT, m_Text);

}

//=====================================================

// Таблица сообщений класса CMyDialog

//=====================================================

BEGIN_MESSAGE_MAP(CMyDialog, CDialog)

 ON_BN_CLICKED(IDC_DEFAULT, OnDefault)

END_MESSAGE_MAP()

//=====================================================

// Метод OnDefault класса CMyDialog

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату