Опис виконання роботи
1. Створити однодокументну (SDI) програму odz3.
2.Передбачити змінні: CPoint Anchor; //початкова точка
Cpoint DrawTo; //кінцева точка.
Cpoint OldPoint ;//попередня точка
Ввести їх у якості елементів даних у клас Codz3View з доступом protected.
3. В класс Codz3View також додати метод MakeAllFlagsFalse().
У ньому на флаг встановити false. Цей метод викликається із конструктора класа.
void CODZ3View::MakeAllFlagsFalse()
{
bDrawRectangle=false;
}
Це призводить до вимикання всіх режимів малювання при запускі програми.
4. Викликати редактор меню та додати пункт меню Tools. Включити в нього підпункт: Rectangle.
5. Додати у панель інструментів відповідну підпункту меню кнопку
6. Зв’язати кнопку з пунктом меню. Для цього необхідно клацнути двічі на кнопці Rectangle . У вікні properties вибрати вікно ID та клацнути по ньому. З розкритого списку вибрати ID_TOOLS_RECTANGLE. Це ідентифікатор меню Rectangle. Таким чинок, кнопка Rectangle зв’язується з вхідним пунктом меню.
Нижче у поле prompt необхідно ввести Rectangle \n Rectangle. Це значить, що коли користувач затримає вказівник миші над даною кнопкою, у рядку стану з’явиться текст Rectangle . Крім того, текст за символом \n буде виведен у якості екранної підказки біля кнопки.
7. Створити обробник для пункту меню Rectangle. Спочатку необхідно викликати метод MakeAllFlagsFalse() а потім присвоїти значення true. Обробник має вигляд:
void CODZ3View::OnToolsRectangle()
{
bDrawRectangle=true;
}
7. Помітити команду меню.
Виділити пункт меню Rectangle, викликати контексне меню, а уньому Add Event Handler. У вікні вибрати UPDATE_COMMAND_UI, а у списку Class list – Codz3View.
void CODZ3View::OnUpdateToolsRectangle(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(bDrawRectangle);
}
8. Обробити повідомлення о натиснутій клавіші. Натиснення лівої клавіші задає початкову точку для малювання фігури. Створити обробник події натиснення цієї кнопки.
Для цього вибрати Codz3View, викликати контекстне меню ->properties->messages. В списку вибрати WM_LBUTTONDOWN. Клацнути по ньому. З’явиться <Add>OnLButtonDown. Ще раз натиснути, що призведе до появи обробника.
void CODZ3View::OnLButtonDown(UINT nFlags, CPoint point)
{
Anchor.x=point.x;
Anchor.y=point.y;
OldPoint.x=Anchor.x;
OldPoint.y=Anchor.y;
CView::OnLButtonDown(nFlags, point);
}
9. Запрограмувати малювання прямокутника. Малювання відбувається при відпускання лівої кнопки миші. Додати обробник
ОnLButtonUp(). Це робиться так як і у попередньому випадку.
void CODZ3View::OnLButtonUp(UINT nFlags, CPoint point)
{
CODZ3Doc* pDoc=GetDocument();
ASSERT_VALID(pDoc);
DrawTo.x=point.x;
DrawTo.y=point.y;
CClientDC*pDC=new CClientDC(this);
if(bDrawRectangle)
{
pDC->MoveTo(Anchor.x,Anchor.y);
pDC->Rectangle(Anchor.x,Anchor.y,DrawTo.x,DrawTo.y);
pDoc->pMetaFileDC->MoveTo(Anchor.x,Anchor.y);
pDoc->pMetaFileDC->Rectangle(Anchor.x,Anchor.y,DrawTo.x,DrawTo.y);
}
delete pDC;
CView::OnLButtonUp(nFlags, point);
}
10. Забезпечемо оновлення зображення.
а) Включимо в заготовочний файл документа вказівник pMetaFileDC на контекст пристрою метафайла, який буде використовуватися . Для цього виділити клас Codz3Doc, викликати контекстне меню, Add Variable. Вказати тип змінної CMetaFileDC* та ввести ім’я вказівника.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.