Шрифт:
Теперь рассмотрим все пункты по порядку.
• В объекте Dialog Box вы задаете следующие данные:
Caption — название диалогового окна.
Font — здесь вы установили шрифт — System и его размер 10
• Static Text — это элемент текста, он вставляется как обычный элемент управления, но не выполняет никаких функций, так как служит для показа текста, который вы зададите в Captions. Так же мы задали некоторые графические установки для статистического текста — это Client Edge и Static Edge. Поздравляю, вы закончили визуальное проектирование диалоговой панели!
Связывание кода с событием BN_CLICKED кнопки Exit
При нажатии на кнопку Exit программа Draw.Exe завершится.
• Чтобы связать код с событием BN_CLICKED кнопки EXIT, выполните следующие действия:
• Выберете ClassWizard в меню View
• Выберете закладку Message Maps в панели ClassWizard
• Используйте диалоговую панель ClassWizard для выбора следующего события:
Class Name: CDrawDIg
Object ID: IDC_EXIT_BUTTON
Messages: BN_CLICKED
• Щелкните на кнопку Add Fucntion и в раскрывшемся окне нажмите кнопку ОК.
• Сейчас ваша панель MFC ClassWizard должна будет выглядеть так:
• Нажмите кнопку Edit Code и напишите следующий код в функции OnExitButton:
void CDrawDlg::OnExitButton
{
// TODO: Add your control notification handler code here
////////Мой код начинается здесь///////////
OnOK;
////////Мой код заканчивается здесь///////////
}
• Функция ОnОК, которую вы ввели завершает программу, при нажатии на кнопку Exit.
Сейчас мы свяжем код с событием WM_MOUSEMOVE, которое будет автоматически выполняться при передвижении мыши.
• Чтобы связать код с событием WM_MOUSEMOVE диалоговой панели, выполните следующие действия:
• Выберете ClassWizard в меню View
• Выберете закладку Message Maps в панели ClassWizard
• Используйте диалоговую панель ClassWizard для выбора следующего события:
Class Name: CDrawDIg
Object ID: CDrawDIg
Messages: WM_MOUSEMOVE
• Щелкните на кнопку Add Fucntion.
Нажмите кнопку Edit Code и напишите следующий код в функции OnMouseMove:
void CDrawDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
////////Мой код начинается здесь///////////
if((nFlags 8l MK_LBUTTON)==MK_LBUTTON)
{
CCIientDC dc(this);
dc.SetPixel(point.x, point.y, RGB(0,0,0));
}
//конец структуры IF
////////Мой код заканчивается здесь///////////
///…
• Код который вы ввели содержит единственный оператор IF:
• Оператор IF содержит в себе функции, которые будут выполняться, если условие оператора IF верно. Условие таково, если левая кнопка мыши нажата и произошло перемещение, то функции внутри оператора IF выполняются.
• Функция OnMouseMove выполняется при любом передвижении мыши, ее параметр nFlags показывает была ли нажата какая-нибудь клавиша клавиатуры(типа ALT или Shift) и кнопка мыши. Операция & проверяет прижата ли левая кнопка мыши при ее перемещении. Если это так, то выполняется код ниже оператора IF.
• Код в блоке оператора IF CCIientDC dc(this); создает объект контексного устройства, с помощью него вы сможете рисовать, его можно назвать воображаемым экраном в памяти компьютера. Научно говоря, dc(this) — это экземпляр класса CCIientDC с параметром конструктора this, с помощью экземпляра класса вы можете обращаться к функциям этого класса.
• Следующий оператор, который вы напечатали рисует точку в заданном месте (место щелчка мыши), используя параметры point.x и point.y, которые ему передает функция OnMouseMove, и заданного цвета, с помощью функции RGB;.