Связывание событий с элементами управления
Связывание кода с событием BN_CLICKED кнопки Exit
При нажатии на кнопку Exit программа Graph.Exe завершится.
// TODO: Add your control notification handler code here
////////Мой код начинается здесь///////////
OnOK();
////////Мой код заканчивается здесь///////////
}
Установка таймера
Программа Graph имеет таймер, который является программным механизмом, генерирующем событие WM_TIMER через равные промежутки времени. Код в нашей программе будет задавать частоту, с которой будет выполняться событие WM_TIMER. Если вы, например, зададите рабочий интервал равный 500 милисекунд, то событие WM_TIMER и связанный с ним код будет выполняться каждые 500 миллисекунд.CDialog::OnInitDialog();
//....
////////Мой код начинается здесь///////////
///Установить системный таймер
int iInstallResult;
iInstallResult=SetTimer(1, 50, NULL);
if(iInstallResult==FALSE)
{
MessageBox("Cannot install timer",
"Error message",
MB_OK+MB_ICONERROR);
}
////////Мой код заканчивается здесь///////////
return TRUE; // return TRUE unless you set the focus to a
control
}
CDialog::OnDestroy();
// TODO: Add your message handler code here
////Здесь начинается мой код////
KillTimer(1);
////Здесь заканчивается мой код////
}
Проверка таймера
Перед тем, как продолжить создание программы, мы должны убедиться, что таймер работает как положено.//....
////////Мой код начинается здесь///////////
MessageBeep(0xFFFFFFFF); //если есть Sound Blaster, попробуйте в качестве параметров
//MB_ICONASTERISK, MB_ICONEXCLAMATION, MB_ICONHAND, MB_ICONQUESTION, MB_OK
////////Мой код заканчивается здесь///////////
CDialog::OnTimer(UINT nIDEvent);
}
Событие WM_PAINT
Событие WM_PAINT происходит каждый раз, когда необходимо перерисовать окно. Это бывает в таких случаях, когда, например, окно другой программы налoжилось на вашу, то после закрытия той программы, в вашей программе программе круга уже не будет, так как его стерло другое окно. Если вы перетащили, к примеру, половину окна программы за рабочую облать, то опять же требуется перерисовка экрана. Windows сама не будет перерисовывать экран, она будет только генерировать сообщение WM_PAINT, а наша задача уже перерисовывать.// TODO: Add your message handler code here
////////Мой код начинается здесь///////////
///Создать объект контекста устройства(DC)
CClientDC dc(this);
//Создать новое перо
CPen MyNewPen;
MyNewPen.CreatePen(PS_SOLID, 10, RGB(255,0,0));
//Выбрать перо
CPen* pOriginalPen;
pOriginalPen=dc.SelectObject(&MyNewPen);
CRect MyRectangle(20, 10, 120,110);
//Нарисовать круг
dc.Ellipse(&MyRectangle);
//Выбрать первоначальное перо
dc.SelectObject(pOriginalPen);
////////Мой код заканчивается здесь///////////
CDialog::OnPaint();
}


Код перерисовки
if (IsIconic())
{
//....
}
else
{
////Мой код начинается здесь////
OnDrawgraphicsButton();
////Мой код заканчивается здесь////
//...
}
}
Модификация функции OnPoint()
if (IsIconic())
{
//....
}
else
{
////Мой код начинается здесь////
// OnDrawgraphicsButton();
///Создать объект контекста устройства(DC)
CPaintDC dc(this);
//Создать новое перо
CPen MyNewPen;
MyNewPen.CreatePen(PS_SOLID, 10, RGB(255,0,0));
//Выбрать перо
CPen* pOriginalPen;
pOriginalPen=dc.SelectObject(&MyNewPen);
CRect MyRectangle(20, 10, 120,110);
//Нарисовать круг
dc.Ellipse(&MyRectangle);
//Выбрать первоначальное перо
dc.SelectObject(pOriginalPen);
////Мой код заканчивается здесь////
//...
}
}
Визуальное проектирование диалоговой панели
IDD_CUSTOM_DIALOG и связывание событий с элементами
управления(продолжение).