Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Обучение VC++ / ЛекцииИнтернетС++ / Лекция_лаб_практикум.doc
Скачиваний:
64
Добавлен:
16.02.2016
Размер:
932.35 Кб
Скачать

Добавление переменных-членов.

Добавьте следующие переменные-члены:

Переменная

Тип

Описание

m_lred

int

Определяет состояние пункта “Красный” меню “Цвета линий”. Если равна 1 значит пункт выбран, если 0 то нет.

m_zred

int

Определяет состояние пункта “Красный” меню “Цвета заливки”. Если равна 1 значит пункт выбран, если 0 то нет.

m_lblur

int

Определяет состояние пункта “Синий” меню “Цвета линий”. Если равна 1 значит пункт выбран, если 0 то нет.

m_zblur

int

Определяет состояние пункта “Синий” меню “Цвета заливки”. Если равна 1 значит пункт выбран, если 0 то нет.

m_lgreen

int

Определяет состояние пункта “Зеленый” меню “Цвета линий”. Если равна 1 значит пункт выбран, если 0 то нет.

m_zgreen

int

Определяет состояние пункта “Зеленый” меню “Цвета заливки”. Если равна 1 значит пункт выбран, если 0 то нет.

m_col_l

int

Определяет текущий цвет линий

m_col_z

int

Определяет текущий цвет заливки

mouse_x

int

Хранит координату мыши по Х

mouse_y

int

Хранит координату мыши по Y

После того как Вы добавите переменные, необходимо будет провести их инициализацию. Лучше всего для этого подходит конструктор класса CL3_1View.

CL3_1View::CL3_1View()

{

m_lred=0;

m_zred=0;

m_lblur=0;

m_zblur=0;

m_lgreen=0;

m_zgreen=0;

m_col_l=0;

m_col_z=0;

}

Добавление функции OnMouseMove.

Для того чтобы постоянно получать информацию о координатах мыши, необходимо добавить обработчик сообщения WM_MOUSEMOVE в класс CL3_1View.

// Обработчик сообщения WM_MOUSEMOVE

void CL3_1View::OnMouseMove(UINT nFlags, CPoint point)

{

//Сохраняем координату Х

mouse_x=point.x;

//Сохраняем координату Y

mouse_y=point.y;

//Вызываем функцию базового класса

CView::OnMouseMove(nFlags, point);

}

Программирование команд контекстного меню.

Для того, чтобы создать обработчик пункта меню необходимо при помощи Class Wizard создать обработчик сообщения ON_COMMAND поступающего от этого пункта (Рис. 3.1.5).

 

Создайте обработчики для всех пунктов контекстного меню в классе CL3_1View.

///////////////////////////////////////////////////////////////

// Обработка контекстного меню //

///////////////////////////////////////////////////////////////

//Рисование квадрата

void CL3_1View::OnMenuKv()

{ //Создаем контекст устройства связанного с

//клиентской областью

CClientDC dc(this);

// Сохраняем текущий контекст

int old=dc.SaveDC();

//Создаем новую кисть и новый карандаш

//в текущем контексте устройства

CBrush newBrush(m_col_z);

CPen newPen(PS_DASHDOT,2,(COLORREF) m_col_l);

//Выбираем созданные кисть и карандаш в

//текущем контексте устройства

dc.SelectObject(&newPen);

dc.SelectObject(&newBrush);

//Рисуем прямоугольник

dc.Rectangle(mouse_x-10,mouse_y-10,mouse_x+10,mouse_y+10);

//Востанавливаем старый контекст устройства

dc.RestoreDC(old);

}

// Рисование элипса

void CL3_1View::OnMenuEl()

{

//Создаем контекст устройства связанного с

//клиентской областью

CClientDC dc(this);

// Сохраняем текущий контекст

int old=dc.SaveDC();

//Создаем новую кисть и новый карандаш

//в текущем контексте устройства

CBrush newBrush(m_col_z);

CPen newPen(PS_DASHDOT,2,(COLORREF) m_col_l);

//Выбираем созданные кисть и карандаш в

//текущем контексте устройства

dc.SelectObject(&newPen);

dc.SelectObject(&newBrush);

//Рисуем элипс

dc.Ellipse(mouse_x-15,mouse_y-10,mouse_x+15,mouse_y+10);

//Востанавливыем старый контекст устройства

dc.RestoreDC(old);}

// Рисование линии

void CL3_1View::OnMenuLine()

{

// Без комментариев

CClientDC dc(this);

int old=dc.SaveDC();

CPen newPen(PS_DASHDOT,2,(COLORREF) m_col_l);

dc.SelectObject(&newPen);

dc.MoveTo(mouse_x-10,mouse_y+10);

dc.LineTo(mouse_x+10,mouse_y-10);

dc.RestoreDC(old);

}