3. Запустите среду Microsoft Visual Studio C++ и создайте новый проект на основе шаблона SDI приложения. Для этого выберете пункты меню File-New и в окне конструктора проектов выберете тип проекта MFC AppWizard(exe). В следующем окне выберете тип приложения Single document.
4. Раскройте окно управления проектом (пункты меню View-WorkSpace). Щелкните правой кнопкой мыши по верхней строке дерева классов и выберете пункт меню New Class. В раскрывшемся диалоговом окне определите тип класса как Generic Class (Рисунок 1). В поле Name определите имя вновь создаваемого класса (например CLine) и нажмите ОК. При этом в окне WorkSpace должно отобразится имя нового класса.
Рисунок 1
5. Щелкните правой кнопкой мыши по имени созданного класса и выберете пункт меню Go To Defenition. При этом должно раскрыться окно редактирования с заголовочным файлом класса CLine. Добавьте в объявление класса текст из примера. При этом объявление класса CLine должно будет выглядеть как показано ниже.
class CLine
{
public:
CLine();
virtual ~CLine();
public:
int XFirst, YFirst; //Начальные и конечные
int XLast, YLast; //Координаты отрезка прямой
int LineWidth; //Толщина линии
COLORREF LineColor; //Цвет прямой
//Инкапсуляция функции в класс
DrawLine(CDC *pDC, int X, int Y); // Отрисовка отрезка начиная
// с координат X,Y.
};
6. Раскройте дерево класса CLine в окне WorkSpace. В дереве класса должны отобразиться добавленные Вами новые члены и методы. Посредством двойного щелчка мыши на методе-конструкторе класса CLine() откройте окно редактирования файла определения класса CLine (файл CLine.cpp). Добавьте в текст программы определение метода DrawLine(CDC *pDC, int X, int Y) взятое из примера:
CLine :: DrawLine(CDC *pDC, int X, int Y)
{
CPen Pen(PS_SOLID, LineWidth, LineColor); // Создание пера
CPen *OldPen; // Указатель на предыдущее перо
OldPen=pDC->SelectObject(&Pen); // Выбор пера
pDC->MoveTo(XFirst + X,YFirst + Y); // Перемещение пера
pDC->LineTo(XLast + X,YLast + Y); // Рисование отрезка
pDC->SelectObject(OldPen); // Выбираем предыдущее перо
}
7. Добавьте в программе новый пункт меню (например Отрисовка линии). Создайте функцию-обработчик данного пункта меню в классе окна просмотра. Данный класс наследуется от класса CView и в созданном проекте будет иметь имя C<имя проета>View. Вызовите функцию-обработчик меню на редактирование и добавьте код программы из примера использования объекта класса CLine.
8. Путем двойного щелчка на имени класса C<имя проета>View вызовите на редактирование файл объявления класса и добавьте в разделе PUBLIC строку, объявляющую член класса отрезка прямой ( СLine Line1; ). Для того, чтобы объявление класса CLine стало доступным в классе C<имя проета>View, необходимо в тексте перед объявлением класса C<имя проета>View поместить директиву включения заголовочного файла для класса CLine (#include "Line.h").
9. Запустите программу на выполнение. Если вы все сделали правильно, то при нажатии созданного пункта меню на экране отобразится отрезок прямой красного цвета.
10. В соответствии с заданием создайте класс графического объекта и модифицируйте программу таким образом, чтобы созданный Вами объект класса отобразился на экране.
11. Модифицируйте программу таким образом, чтобы объект перемещался по экрану. Для этого можно использовать следующий фрагмент кода функции обработки пункта меню:
Line1.XFirst=0; //Определяем начальные координаты отрезка
Line1.YFirst=0;
Line1.XLast =100;
Line1.YLast =100;
Line1.LineWidth=5; //Устанавливаем толщину отрезка
Line1.LineColor=RGB(255,0,0); //Красный цвет
CDC *pDC=GetDC(); //Получаем контекст окна
int StartPosX=10;
for (int i=0;i < 100;i++)
{
pDC->FillSolidRect(0,0,2000,2000,RGB(255,255,255)); //Очистка экрана
Line1.DrawLine(pDC,StartPosX,100); //Рисуем отрезок
StartPosX+=5;
Sleep(20); //Пауза 20 мс
}
ReleaseDC(pDC); //Освобождаем контекст окна
12. Добавьте в программу второй объект созданного класса. Модифицируйте программу так, чтобы по экрану перемещались два объекта в разных направлениях и с разной скоростью, разного цвета и размера.
|