Проектирование диалоговой панели
Идем дальше!
Таблица 2.0
Объект | Свойство | Установка |
Group Box | ID | IDC_STATIC |
Caption | &Pen Styles | |
Picture | ID | IDC_PENCOLOR |
Type | Rectangle | |
Color | Black | |
Sunken | Отмечен, страница Styles | |
Notify | отмечен, страница Styles | |
Static Text | ID | IDC_STATIC |
Caption | &Color |
Связывание кода с событием BN_CLICKED элемента Picture
При нажатии на индикатор цвета программа PaintORama должна вывести диалоговое окно выбора цвета!CPaintORamaDlg::CPaintORamaDlg(CWnd* pParent /*=NULL*/)
:
CDialog(CPaintORamaDlg::IDD, pParent)
{
......
////-Ваш
код начинается здесь -////
m_PenColor = RGB(0, 0, 0);
////-Ваш код заканчивается здесь -////
}
//Получить указатель на элемент управления
CWnd*
pPenColor=GetDlgItem(IDC_PENCOLOR);
//Получить координаты элемента
управления
pPenColor->GetWindowRect(&m_PenColorSwatch);
//Изменить координаты относительно клиентской
области
ScreenToClient(&m_PenColorSwatch);
//Cузить рамку
m_PenColorSwatch.DeflateRect(2,2,1,1);
// TODO: Add your control notification handler code
here
/*Создать объект класса диалоговой панели выбора цвета и
передать ему в конструкторе текущее значение цвета*/ CColorDialog
dlg(m_PenColor);
//Вывод диалогового
окна
if(dlg.DoModal()==IDOK)
{
//Установка
цвета
m_PenColor=dlg.GetColor();
//Создание кисти
CBrush
swatch;
swatch.CreateSolidBrush(m_PenColor);
//Получить объект контекста устройства
CClientDC dc(this);
//Закрашивание индикатора выбранным
цветом
dc.FillRect(&m_PenColorSwatch, &swatch);
}
BOOL CPaintORamaDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
.....
//Проверить было ли нажатие внутри области
рисования.
if(m_Canvas.PtInRect(point))
{
//Присвоить
координаты начала двум переменным
m_LineStart=
point;
m_LineEnd=point;
/////-Ваш код начинается здесь-///
m_Pen.DeleteObject();
m_Pen.CreatePen(PS_SOLID, 1,
m_PenColor);
/////-Ваш код заканчивается здесь-/////
//Захватить мышь
SetCapture();
}
}
void CPaintORamaDlg::OnMouseMove(UINT nFlags, CPoint
point)
{
if( (nFlags & MK_LBUTTON) &&
m_Canvas.PtInRect(point))
{
//Получить указатель на контекст устройства
CClientDC
dc(this);
////-Ваш код начинается здесь-////
dc.SelectObject(&m_Pen);
////-Ваш код закачивается здесь-////
//Присвоить координаты щелчка переменной m_LineEnd
m_LineEnd=
point;
//Нарисовать
линию
dc.MoveTo(m_LineStart);
dc.LineTo(m_LineEnd)
/*Присвоить текущее переменной m_LineStart значение позиции
курсора*/
m_LineStart=m_LineEnd;
}
}
Радио для всех © |