Microsoft Visual C++ и MFC. Программирование для Win95 и WinNT



         

Многооконный графический редактор


Доработаем приложение Multi так, чтобы оно обладало возможностями приложения Single, описанного в томе 24 серии “Библиотека системного программиста”. Приложение Single представляет собой простейший графический редактор, в котором можно рисовать изображения, содержащие маленькие квадраты, а также сохранять эти рисунки в файлах на диске.

Добавьте в определение класса CMultiDoc новый элемент pointFigCenter, который будет хранить графический документ. Как и в приложении Single, этот элемент сделан на основе шаблона CArray. Однако вместо разработанного нами класса CFigure, здесь мы используем стандартный класс CPoint, входящий в состав MFC. Тип фигуры запоминать не надо, так как приложение Multi будет рисовать фигуры только одного типа:

class CMultiDoc : public CDocument

{

// Attributes

public:

   CArray<CPoint, CPoint&> pointFigCenter;

Шаблоны классов CArray, CMap и CList определены во включаемом файле afxtempl.h. Так как мы используем класс CArray, добавьте файл afxtempl.h в конце включаемого файла stdafx.h:

#include <afxtempl.h>

Добавьте обработчик сообщения от левой кнопки мыши. Для этого лучше всего воспользоваться средствами MFC ClassWizard:

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

// CMultiView message handlers

void CMultiView::OnLButtonDown(UINT nFlags, CPoint point)

{

  // TODO:

  // Получаем указатель на документ (объект класса CSingleDoc)

   CMultiDoc* pDoc = GetDocument();

   // Проверяем указатель pDoc

   ASSERT_VALID(pDoc);

   // Отображаем на экране квадрат

   CClientDC dc(this);

   dc.Rectangle(

         point.x-10, point.y-10, point.x+10, point.y+10);

   // Добавляем к массиву, определяющему документ, новый

   // элемент

   pDoc->pointFigCenter.Add(point);

   // Устанавливаем флаг изменения документа

   pDoc->SetModifiedFlag();

   // Вызываем метод OnLButtonDown базового класса CView

   CView::OnLButtonDown(nFlags, point);

}

Обработчик этого сообщения рисует квадрат. Для отображения квадрата используется метод Rectangle. Первые два параметра этого метода определяют расположение левого верхнего угла параллелепипеда. Третий и четвертый параметры задают размеры по горизонтали и вертикали.




Содержание  Назад  Вперед