Событие EN_CHANGE происходит каждый раз при изменении содержимого окна редактирования, это будет использоваться для того, чтобы при каждом изменении присваивалось новое значение переменной m_SpeedEdit. Чтобы связать код с событием EN_CHANGE, нужно выполнить следующие действия:
- выберем ClassWizard в меню View;
- выберем закладку Message Maps в панели ClassWizard;
- используем диалоговую панель ClassWizard для выбора следующего события:
Class Name: CSpeedDlg
Object ID: IDC_SPEED_EDIT
Messages: EN_CHANGE
Нажмем на кнопку Add Fucntion и в раскрывшемся окне нажмем кнопку OK.
Сейчас панель MFC ClassWizard должна будет выглядеть так, как показано на рисунке 24.
Рис.24. Диалоговая панель MFC ClassWizard
Далее нажмем кнопку Edit Code и напишем следующий код в функции OnChangeSpeedEdit():
void CSpeedDlg::OnChangeSpeedEdit()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you modify CDialog::OnInitDialog()
// function to send the EM_SETEVENTMASK message to the control
// with the ENM_CHANGE flag ORed into the lParam mask.
// TODO: Add your control notification handler code here
////Мой код начинается здесь////
//Обновить экран
UpdateData(TRUE);
////Мой код заканчивается здесь////
}
Единственный оператор, который обновляет переменные элементов управления, исходя из текущего содержимого диалогового окна:
UpdateData(TRUE);
Следовательно, после выполнения данного оператора переменной m_SpeedEdit будет присвоено значение содержимого окна редактирования.
Связывание кода с пунктом CurrentSpeed меню File
Сейчас свяжем код с событием COMMAND, которое возникает при выборе пункта меню, в данном случае при выборе пункта Current Speed.
Чтобы связать код с событием COMMAND, выполним следующие действия:
- откроем закладку Resource View, раскройте пункт Speed View, а там выберем Menu;
- выполним двойной щелчок по IDR_MENU1.
- выберем ClassWizard в меню View;
- выберем закладку Message Maps в панели ClassWizard.
Используем диалоговую панель ClassWizard для выбора следующего события:
Class Name: CSpeedDlg
Object ID: ID_FILE_CURRENTSPEED
Messages: COMMAND
Нажмем на кнопку Add Fucntion и в раскрывшемся окне нажмем кнопку OK. Далее нажмем кнопку Edit Code и напишем следующий код в функции OnFileCurrentspeed():
void CSpeedDlg::OnFileCurrentspeed()
{
// TODO: Add your command handler code here
////Мой код начинается здесь////
char strSpeed[100];
Itoa(m_SpeedEdit,strSpeed,10);
MessageBox(strSpeed);
////Мой код заканчивается здесь////
}
Первые два оператора, преобразуют в строку целое значение, хранящееся в переменной m_SpeedEdit:
char strSpeed[100]; itoa(m_SpeedEdit,strSpeed,10);
Последний оператор использует функцию MessageBox() для вывода значения строки, хранящееся в переменной strSpeed:
MessageBox(strSpeed);
Связывание кода с пунктом Exit меню File
Сейчас свяжем код с событием COMMAND, которое возникает при выборе пункта меню, в данном случае при выборе пункта Exit. Чтобы связать код с событием COMMAND, необходимо выполнить следующие действия. Необходимо открыть закладку Resource View, и пункт Speed View, а там выбрать Menu. Нажмем два раза левой клавишей мыши по IDR_MENU1.
После выполненных действий выберем ClassWizard в меню View и закладку Message Maps в панели ClassWizard и воспользуемся диалоговой панелью ClassWizard для выбора следующего события:
Class Name: CSpeedDlg
Object ID: ID_FILE_EXIT
Messages: COMMAND
Нажмем на кнопку Add Fucntion и в раскрывшемся окне кнопку OK.
Далее нажмем кнопку Edit Code и напишем следующий код в функции OnFileExit():
void CSpeedDlg::OnFileExit()
{
// TODO: Add your command handler code here
////Мой код начинается здесь////
OnOK();
////Мой код заканчивается здесь////
}
Единственный оператор, который ввели, завершает работу программы.