Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
38
Добавлен:
16.02.2016
Размер:
1.98 Mб
Скачать

Пример:

Void cMyView::OnDraw( cdc* pDc ) // Переопределение метода OnDraw

(

CMyDoc* pDoc = GetDocumentO;

CString strl = pDoc->GetData(); - // Метод GetData следует определить CRect rect;

GetClientRect( &rect);

pDC->SetTextAIign( TA_BASELINE | TA_CENTER ); pDC->TextOnt( 2, 2, strl, strl.GetLength()); // Вывод строки }

Реализация интерфейса пользователя через классы отображений

Классы отображений содержат набор методов, выполняющих обработку ввода пользователя. Переопределение этих методов позволяет программи­ровать:

• обработку сообщений Windows от мыши и от клавиатуры;

• обработку выполнения пунктов меню, нажатия кнопок инструментария и клавиш-акселераторов.

Реализация интерфейса пользователя может включать в себя обработку некоторых стандартных пунктов меню, таких, как Edit | Copy, Edit | Cut и Edit|Paste. Для работы с буфером промежуточного хранения следует исполь­зовать соответствующие методы класса CWnd.

MFC поддерживает реализацию трех типов интерфейса для отображения! одного документа посредством нескольких отображений: • Отображение объектов одного класса: каждый в отдельном окне документа (поддержка команды Window I New):

• Отображение объектов одного класса в одном разделенном окне доку-J мента (поддержка команды Window | Split). Создается несколько объек­тов отображения одного класса:

• Отображение объектов различных классов в одном окне документа:

Поддержка работы с разделенным окном реализована в классе CSplitterWnd. Разделенным окном является обычное окно, разбитое на не-| сколько панелей (окон) и содержащее один и тот же документ.

Цикл жизни документа (а совместно с ним и окна-рамки и отображе­ния) в MDI-приложении состоит из следующих этапов:

1. Вызов конструктора документа.

2. Для каждого нового документа вызов метода OnNewDocument или OnOpenDocument.

3. Отображение и обработка документа.

4. Удаление данных вызовом метода DeleteContents.

5. Вызов деструктора документа.

Цикл жизни документа (а совместно с ним и окна-рамки и отображе­ния) в SDI-приложении отличается тем, что вызов конструктора происхо­дит только один раз при первоначальном создании документа; аналогичен и вызов деструктора. А для каждого нового (но не первоначально) созда­ваемого или открываемого документа выполняются только этапы 2, 3 и 4.

Для использования архитектуры документ-отображение при соз­дании приложения следует: • создать ресурсы, описываемые в шаблоне документа; • создать объект приложение (класса, производного от CWinApp); • создать: • объекты документы, • объекты отображения, • объекты окна-рамки; • в методе Initlnstance класса приложения создать и зарегистриро­вать объекты шаблона документа (методы CSingleDocTemplate, CMultiDocTemplate, AddDocTemplate); • создать и отобразить главное окно приложения (класс CFrameWnd, методы LoadFrame, ShowWindow, UpdateWindow).

Более подробно вопросы создания приложений с SDI и MDI интерфей­сом будут рассмотрены в гл. 7.

Соседние файлы в папке VC++Баженова