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


Класс для нового представления документа - часть 3


m_szView.cy/2) ;

}

Способом, который вы уже не раз применяли, введите в класс CDrawView реакцию на сообщение WM_SIZE и измените тело функции-обработчика.

void CDrawView: :OnSize(UINT nType, int ex, int су)

{

CView: :OnSize (nType, ex, cy) ;

// Каркас иногда вызывает эту функцию с нулевыми сх,су

if (cx==0 | | су==0)

return;

//====== Запоминаем размеры окна

m_szView = CSize (ex, cy) ;

}

Вспомните способ замещения виртуальных функций (Overrides) и используйте его для введения в класс заготовки функции OnlnitialUpdate. Введите в нее код для подготовки инструментов, которые понадобятся в процессе визуального редактирования данных:

void CDrawView::OnInitialUpdate() {

//====== Загружаем курсор перемещения

m_hGrab=((CTreeApp*)AfxGetApp())->LoadCursor(IDC_MOVE);

//=== Создаем перо перерисовки контура (при перемещении)

m_penLine.CreatePen (PS_DOT,О,COLORREF(0)); }

Настала очередь создания второго участника квартета, определяющего поведение окна MDI-документа. Это заявленный нами класс CDrawFrame. Для его создания повторите те же действия, которые вы производили при создании класса CDr awView, но при выборе родительского класса укажите на класс cMDichildWnd (без параметра splitter). Представьте приложению нового оркестранта, вставив директиву

#include "DrawFrame.h"

в список уже существующих директив файла Тгее.срр. Запустите приложение. Если вы не допустили ошибок или устранили их, то должны увидеть диалоговое окно New со списком из двух строк: Tree и Draw. Выбрав Draw, вы должны увидеть окно документа с заголовком Drawl и изображенной в центре окна звездой. Нажмите кнопку New на панели инструментов и во вновь появившемся диалоговом окне выберите на сей раз шаблон Tree. В меню Window выберите Tile, и вы увидите два окна, причем второе будет иметь заголовок Treel. Переводя фокус из одного окна в другое, обратите внимание на смену строк меню главного окна. Значки в верхнем левом углу окон документов тоже должны быть разными. Панели инструментов, как мы уже отмечали, автоматически не изменяются.Эту функциональность мы внесем позже.




Начало  Назад  Вперед