Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT | страница 75



>//=====================================================

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

>//=====================================================

>void CMyDialog::DoDataExchange(CDataExchange* pDX) {

> CDialog::DoDataExchange(pDX);

> DDX_Text(pDX, IDC_EDIT, m_Text);

>}

Методу DoDataExchange передается указатель pDX на объект класса CDataExchange. Этот объект создается, когда вы инициируете процесс обмена данными, вызывая метод UpdateData . Элементы данных класса CDataExchange определяют процедуру обмена данными, в том числе определяют, в каком направлении будет происходить этот обмен. Обратите внимание, что указатель pDX передается функциям DDX_ и DDV_.

В библиотеку MFC входит большое количество функций DDX_ и DDV_. Чтобы облегчить задачу написания метода DoDataExchange для класса вашей диалоговой панели, используйте ClassWizard. Он позволяет привязать к органам диалоговой панели элементы данных класса. При этом метод DoDataExchange создается ClassWizard автоматически. ClassWizard сам выбирает, какие функции DDX_ и DDV_ надо использовать для данного органа управления и связанного с ним элемента данных класса диалоговой панели. Подробно об использовании ClassWizard для разработки диалоговых панелей вы можете прочитать в главе “Приложение с главной диалоговой панелью”.

Класс диалоговой панели должен обрабатывать сообщения от своих органов управления, поэтому он должен иметь таблицу сообщений. В заголовке таблицы сообщений указывается имя класса CMyDialog и имя базового класса CDialog:

>//=====================================================

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

>//=====================================================

>BEGIN_MESSAGE_MAP(CMyDialog, CDialog)

> ON_BN_CLICKED(IDC_DEFAULT, OnDefault)

>END_MESSAGE_MAP()

Таблица сообщений содержит только одну строку, в которой обрабатывается сообщение с кодом извещения ON_BN_CLICKED от кнопки “Default”. Когда пользователь нажимает кнопку, вырабатывается данное сообщение и вызывается его обработчик – метод OnDefault, определенный в классе CMyDialog:

>//=====================================================

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

>//=====================================================

>void CMyDialog::OnDefault() {

> // TODO:

> m_Text = "Start Text";

> UpdateData(FALSE);

> MessageBeep(0);

>}

Две другие кнопки диалоговой панели "DIALOGPANEL", OK и Cancel не представлены в таблице сообщений, но тем не менее в приложении определены методы OnOK и OnCancel, которые вызываются при нажатии на них. Оказывается для диалоговых панелей определены две стандартные кнопки OK и Cancel, которым присвоены специальные идентификаторы IDOK и IDCANCEL.