Шаг 40 - Как волшебник связывает кнопку с событием

Создание проекта

Мы воспользуемся проектом с которым ведем работу. Создайте свою кнопку Send с идентификатором IDC_BUTTON1, код работы с реестром лучше удалить.

40_1.gif (5562 b)

Создаем код


class CTestDlg : public CDialog // класс диалогового окна
{
.........
CString GetEditStr(); // получить строку
void OnSend(); // функция реакции
protected:
.........
CString m_newedit; // вторая строка
DECLARE_MESSAGE_MAP(); // таблица откликов
};

Реализация таблицы откликов.

BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
ON_BN_CLICKED(IDC_BUTTON1, OnSend)
END_MESSAGE_MAP()

Сама функция.

void CTestDlg::OnSend()
{
AfxMessageBox("Clicked !");
}

А вот так это работает.

40_2.gif (4356 b)

Описание

Итак, раз нажатие кнопки вызовет реакцию, то для реализации реакции необходима процедура вот её OnSend я и описал в классе диалогового окна. DECLARE_MESSAGE_MAP() Вам знакома. ON_BN_CLICKED(IDC_BUTTON1, OnSend) Вам знакома из Шага 16. И наконец реализация. Этот шаг простой и вероятно не очень важный, но AppWizard делает именно так, когда вы устанавливаете реакцию на событие нажатие кнопки, и если Вы должны понимать как это происходит, кроме того он умеет далеко не всё :-).

Шпаргалка

Связь события нажатия устанавливается через обработку.

BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
ON_BN_CLICKED(IDC_BUTTON1, OnSend)
END_MESSAGE_MAP()

Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 30.09.99 (обновлено 7.07.2001)