Пример:
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.