This will be shown to users with no Flash or Javascript.
Урок VI
Связывание событий с элементами управления
Связывание кода с событием BN_CLICKED кнопки Exit
При нажатии на кнопку Exit программа MyMsg.Exe завершится.
Чтобы связать код с событием BN_CLICKED кнопки EXIT, выполните следующие действия:
Выберете ClassWizard в меню View
Выберете закладку Message Maps в панели ClassWizard
Используйте диалоговую панель и для выбора следующего события:
Class Name: CMyMsgDlg
Object ID: IDC_EXIT_BUTTON
Messages: BN_CLICKED
Щелкните на кнопку Add Fucntion и в раскрывшемся окне нажмите кнопку b.
Сейчас ваша панель MFC ClassWizard должна будет выглядеть так:

Нажмите кнопку Edit Code и напишите следующий код в функции OnExitButton():
void CMyMsgDlg::OnExitButton()
{
OnOK();
}
Функция OnOK(), которую вы ввели завершает программу, при нажатии на кнопку Exit.
Связывание кода с событием BN_CLICKED кнопки "OK and Cancel"
При нажатии на кнопку OK and Cancel появиться окно сообщения, которая будет вам предлагать выбрать кнопки OK или Cancel.
Чтобы связать код с событием BN_CLICKED кнопки Yes , выполните следующие действия:
Выберете ClassWizard в меню View
Выберете закладку Message Maps в панели ClassWizard
Используйте диалоговую панель ClassWizard для выбора следующего события:
Class Name: CMyMsgDlg
Object ID: IDC_OKCANCEL_BUTTON
Messages: BN_CLICKED
Щелкните на кнопку Add Fucntion и в раскрывшемся окне нажмите кнопку OK.
Нажмите кнопку Edit Code и напишите следующий код в функции OnOkcancelButton():
void CMyMsgDlg::OnOkcancelButton()
{
int iResults;
iResults=MessageBox("You want Ok and Cancel buttons.",
"I am the second parametr of the MessageBox function",
MB_OKCANCEL+MB_ICONSTOP);
if(iResults==IDOK)
{
m_ResultsEdit="You Clicked the Ok button";
UpdateData(FALSE);
}
if(iResults==IDCANCEL)
{
m_ResultsEdit="You clicked on the Cancel button";
UpdateData(FALSE);
}
}
Первый оператор, который вы ввели объявляет переменную целого типа iResults, эта переменная будет присваивать возращаемое функцией MessageBox значение. Это значение будет отображать какую кнопку вы нажали.
Следущая функция MessageBox будет выводить на экран сообщение, эта функция имеет 3 параметра:
iResults=MessageBox("You want Ok and Cancel buttons.",
"I am the second parametr of the MessageBox function",
MB_OKCANCEL+MB_ICONSTOP);
Первый - строка, которая появиться в панели сообщения.
Второй - строка, образующая заголовок окна сообщения.
Третий аргумент имеет слдеующий вид:
MB_OKCANCEL+MB_ICONSTOP
MB_OKCANCEL - это константа, сообщающая функции MessageBox, что ей нужно вывести в панели сообщения две кнопки - кнопку OK и кнопку CANCEL. При нажатии на эти кнопки функция MessageBox вовращает численное значение нажатой кнопки.
Следующий оператор IF проверяет какая кнопка была нажата, используя для этого переменную iResults. Если кнопка в условии оператора была нажата, то выполняются вложенные операторы.
if(iResults==IDOK)
{
m_ResultsEdit="You Clicked the Ok button";
UpdateData(FALSE);
}
Оператор присваивания:
m_ResultsEdit="You Clicked the Ok button";
присваивает переменной окна редактирнования m_ResultsEdit текстовую строчку, которая будет отображаться в окне редактирования и будет указывать на какую кнопку вы нажали.
Последний оператор обновляет окно редактирования новым значением переменной: m_ResultsEdit.
MB_ICONSTOP - это константа, сообщающая функции MessageBox, что в панели сообщения необходимо показать значок "Остановка".
Связывание кода с событием BN_CLICKED кнопки "Yes, No and Cancel"
При нажатии на кнопку Yes,No and Cancel появиться окно сообщения, которая будет вам предлагать выбрать кнопки YES, No и Cancel.
Чтобы связать код с событием BN_CLICKED кнопки Yes , выполните следующие действия:
Выберете ClassWizard в меню View
Выберете закладку Message Maps в панели ClassWizard
Используйте диалоговую панель ClassWizard для выбора следующего события:
Class Name: CMyMsgDlg
Object ID: IDC_YESNOCANCEL_BUTTON
Messages: BN_CLICKED
Щелкните на кнопку Add Fucntion и в раскрывшемся окне нажмите кнопку OK.
Нажмите кнопку Edit Code и напишите следующий код в функции YesnocancelButton():
void CMyMsgDlg::OnYesnocancelButton()
{
int iResults;
iResults=MessageBox("You want Yes, No and Cancel buttons.",
"I am the second parameter of the MessageBox function",
MB_YESNOCANCEL+MB_ICONINFORMATION);
if(iResults==IDYES)
{
m_ResultsEdit="You clicked on the Yes button.";
UpdateData(FALSE);
}
if(iResults==IDNO)
{
m_ResultsEdit="You clicked on the No button";
UpdateData(FALSE);
}
if(iResults==IDCANCEL)
{
m_ResultsEdit="You clicked on the Cancel button.";
UpdateData(FALSE);
}
}
Первый оператор, который вы ввели объявляет переменную целого типа iResults, эта переменная будет присваивать возращаемое функцией MessageBox значение. Это значение будет отображать какую кнопку вы нажали.
Функция MessageBox возвращает значение нажатой кнопки.
iResults=MessageBox("You want Yes,No and Cancel buttons.",
"I am the second parametr of the MessageBox function",
MB_YESNOCANCEL+MB_ICONINFORMATION);
Следующие константы MB_YESNOCANCEL+MB_ICONINFORMATION показывают
1) MB_YESNOCANCEL- какие клавишы будут выведены в панели сообщения.
2) MB_ICONINFORMATION - что в панель сообщения выводится значок "Информация".
Следующие три оператора IF проверяют какие кнопки были нажаты, используя для этого переменную iResults. Если кнопка в условии оператора была нажата, то выполняются вложенные операторы. Предназначение которых сообщить окну редактирования какая клавиша была нажата.
Связывание кода с событием BN_CLICKED кнопки "Retry and Cancel"
При нажатии на кнопку Retry and Cancel появиться окно сообщения, которая будет вам предлагать выбрать кнопки Retry и Cancel.
Чтобы связать код с событием BN_CLICKED кнопки Retry and Cancel, выполните следующие действия:
Выберете ClassWizard в меню View
Выберете закладку Message Maps в панели ClassWizard
Используйте диалоговую панель ClassWizard для выбора следующего события:
Class Name: CMyMsgDlg
Object ID: IDC_RETRYCANCEL_BUTTON
Messages: BN_CLICKED
Щелкните на кнопку Add Fucntion и в раскрывшемся окне нажмите кнопку OK.
Нажмите кнопку Edit Code и напишите следующий код в функции RetrycancelButton():
void CMyMsgDlg::OnRetrycancelButton()
{
int iResults;
iResults=MessageBox("You want Retry and Cancel buttons.",
"I am the second parameter of the MessageBox function",
MB_RETRYCANCEL+MB_ICONQUESTION);
if(iResults==IDRETRY)
{
m_ResultsEdit="You clicked on the Retry button.";
UpdateData(FALSE);
}
if(iResults==IDCANCEL)
{
m_ResultsEdit="You clicked on the Cancel button.";
UpdateData(FALSE);
}
}
Первый оператор, который вы ввели объявляет переменную целого типа iResults, эта переменная будет присваивать возращаемое функцией MessageBox значение. Это значение будет отображать какую кнопку вы нажали.
Функция MessageBox возвращает значение нажатой кнопки.
iResults=MessageBox("You want Retry and Cancel buttons.",
"I am the second parametr of the MessageBox function",
MB_RETRYCANCEL+MB_ICONQUESTION);
Следующие константы MB_RETRYCANCEL+MB_ICONQUESTION показывают
1) MB_RETRYCANCEL- какие клавишы будут выведены в панели сообщения.
2) MB_ICONQUESTION - что в панель сообщения выводится значок "Вопрос".
Следующие два оператора IF проверяют какие кнопки были нажаты, используя для этого переменную iResults. Если кнопка в условии оператора была нажата, то выполняются вложенные операторы. Предназначение которых сообщить окну редактирования какая клавиша была нажата.
Связывание кода с событием BN_CLICKED кнопки "Yes and No"
При нажатии на кнопку Yes and No появиться окно сообщения, которая будет вам предлагать выбрать кнопки Yes и No.
Чтобы связать код с событием BN_CLICKED кнопки Yes and No, выполните следующие действия:
Выберете ClassWizard в меню View
Выберете закладку Message Maps в панели ClassWizard
Используйте диалоговую панель ClassWizard для выбора следующего события:
Class Name: CMyMsgDlg
Object ID: IDC_YESNO_BUTTON
Messages: BN_CLICKED
Щелкните на кнопку Add Fucntion и в раскрывшемся окне нажмите кнопку OK.
Нажмите кнопку Edit Code и напишите следующий код в функции YesnoButton():
void CMyMsgDlg::OnYesnoButton()
{
int iResults;
iResults=MessageBox("You want Yes and No buttons.",
"I am the second parameter of the MessageBox function",
MB_YESNO+MB_ICONEXCLAMATION);
if(iResults==IDOK)
{
m_ResultsEdit="You clicked on the OK button.";
UpdateData(FALSE);
}
if(iResults==IDNO)
{
m_ResultsEdit="You clicked on the NO button.";
UpdateData(FALSE);
}
}
Первый оператор, который вы ввели объявляет переменную целого типа iResults, эта переменная будет присваивать возращаемое функцией MessageBox значение. Это значение будет отображать какую кнопку вы нажали.
Функция MessageBox возвращает значение нажатой кнопки.
iResults=MessageBox("You want Yes and No buttons.",
"I am the second parametr of the MessageBox function",
MB_YESNO+MB_ICONEXCLAMATION);
Следующие константы MB_YESNO+MB_ICONEXCLAMATION показывают
1) MB_YESNO- какие клавишы будут выведены в панели сообщения.
2) MB_ICONEXCLAMATION - что в панель сообщения выводится значок "Восклицательный знак".
Следующие два оператора полностью аналогичны предыдущим.
Поэксперементируйте с программой MyMsg и щелкните на кнопку Exit для ее прекращения.
Вы закончили связывание событий с элементами управления