Иллюстрированный самоучитель по Visual Studio.Net

         

Развитие класса документа



Теперь, когда мы имеем вспомогательные классы (CDPoint и CPolygon), можно подумать о структуре данных класса CTreeDoc. Нам понадобятся:

  • массив (контейнер) полигонов, которые соответствуют файлам документов, обнаруженных в текущем каталоге;

  • массив строк текста с файловыми путями этих документов;

  • один «дежурный» полигон, который в данный момент редактируется, то есть выбран для демонстрации в окне третьего представления (CDrawView);

  • размеры документа в логической системе координат (Page space);

  • коэффициент увеличения размеров при переходе из World в Page-пространство.

    Кроме этого, нам понадобятся методы для управления тремя окнами: CLef tview, CRightView и CDrawView. Последний класс будет управлять окном, в котором полигон может быть отредактирован. Этот класс надо еще создать. Замените существующий интерфейс класса CTreeDoc на тот, который приведен ниже. Здесь мы также провели упрощение начальной заготовки по схеме, обсуждавшейся выше:

    class CTreeDoc : public CDocument {

    //==== Все 3 представления имеют право доступа

    //==== к данным документа

    friend class CLeftView;

    friend class CRightView;

    friend class CDrawView;

    protected:

    virtual ~CTreeDoc ();

    CTreeDoc () ;

    DECLARE_DYNCREATE(CTreeDoc) public:

    //========== Данные документа============

    //

    CPolygon m_Poly; // Дежурный полигон VECPOLY m_Shapes;

    // Контейнер полигонов

    // ====== Контейнер имен файлов

    vector<CString> m_sFiles;

    //====== Размер документа в Page space

    CSize m_szDoc;

    //== Коэффициент увеличения при переходе World->Page

    OINT m_nLogZoom;

    //====== Флаг: открыто окно типа CTreeFrame

    bool m_bTreeExist;

    //=====Флаг: открыто окно типа CDrawFrame

    bool m_bDrawExist;

    //====== Новые методы класса документ =====//

    //====== Поиск нужного представления

    CView* GetViewfconst CRuntimeClass* pClass);

    //====== Создание нужного представления

    bool MakeViewO ;

    //====== Преобразование координат World -> Page

    CPoint MapToLogPt(CDPointS pt);

    //====== Преобразование координат Page -> World

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







    Forekc.ru
    Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий