Программирование >>  Процедурные приложения 

1 ... 125 126 127 [ 128 ] 129 130 131 ... 150


Файл EDITORVIEW.CPPсодержит реализацию класса CEditorView, который порождается от класса CEditViewи управляет отображением документа.

EditorView.cpp: реализация класса CEditorView

# include stdafx.h

#include . Editor .h

#include EditorDoc.h #include EditorView.h #ifdef DEBUG #define new DEBOG NEW #undef THIS FILE

static char THIS FILE[] = FILE ; #endif

CEditorView

IMPLEMENT DYNCREATE (CEditorView, CView)

BEGIN MESSAGE MAP (CEditorView, CView) {{AFX MSG MAP (CEditorView) }}AFX MSG MAP Стандартныекомандыпечати

ON COMMAND(ID FILE PRINT, CView: : OnFilePrint) ON COMMAND(ID FILE PRINT DIRECT, CView: :OnFilePrint) ON COMMAND(ID FILE PRINT PREVIEW, CView: :OnFilePrintPreview) END MESSAGE MAP ( )

Конструктор и деструкторкласса CEditorView

CEditorView::CEditorView()

{ }

CEditorView::-CEditorView()

BOOL CEditorView: :PreCreateWindow(CREATESTRUCT Ses) { BOOL bPreCreated = CEditView: :PreCreateWindow (cs);

cs.style &= ~ (ES AUTOHSCROLL I WS HSCROLL) ; разрешен перенос слов return bPreCreated;

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

void CEditorView::OnDraw(CDC* pDC)

CEditorDoc* pDoc = GetDocument();

ASSERT VALID(pDoc) ; }

Печать документа

BOOL CEditorView: :OnPreparePrinting (CPrintlnf o* plnfo) { стандартные действия по подготовке к печати return CEditView: :OnPreparePrinting (plnfo);

void CEditorView: :OnBeginPrinting (CDC* pDC, CPrintlnfo* plnfo) { CEditView: :OnBeginPrinting (pDC, plnfo); }

void CEditorView: :OnEndPrinting (CDC* pDC, CPrintlnfo* plnfo) { CEditView: :OnEndPrinting (pDC, plnfo);

Диагностика класса CEditorView

#ifdef DEBUG

void CEditorView: :A-ssertValid() const



CView::AssertValid() ; }

void CEditorView: : Dump (CDumpContext &dc) const

CView::Dump(dc); }

CEditorDoc* CEditorView::GetDocument() отладочнаяверсия{ ASSERT(m pDocument->IsKindOf(RUNTIME CLASS(CEditorDoc))); return (CEditorDoc*)m pDocument; }

#endif DEBUG

Обработчики сообщений класса CEditorView

void CEditorView::OnRButtonDown(DINT nFlags, CPoint point)

char szTimeStr[20];

CTime tm = CTime::GetCurrentTime();

sprintf{szTimeStr, Itsnow %02d:%02d:%02d , tn>. GetHour () , tm. GetMinute () , tm.GetSecondO ) ;

MessageBox(szTimeStr, Isit time to quit yet? , MB OK); CEditView::OnRButtonDown(nFlags, point); }

Анализируя схему сообщений, вы заметите, что в ней содержится макрос on wm rbuttondown, который был добавлен мастером ClassWizard, и обработчики

Сообщений ID FILE PRINT, ID FILE PRINT DIRECT, ID FILE PREVIEW, используемые

совместно с классом CEditorView. Конструктор и деструктор класса остались пустыми. Печать документов реализуется с помощью функций onPreparePrinting(), OnBeginPrinting() и

OnEndPrinting().

В конце листинга помещен текст функции OnRButtonDown(}, осуществляющей обработку сообщений wm rbuttondown. Процесс добавления этой функции с помощью мастера ClassWizard проиллюстрирован на рис. 20.25.

Выполните двойной щелчок на элементе OnRButtonDown в списке Memberfunctions, чтобы перейти непосредственно к разделу файла EDITORVIEW.CPP, отвечающему за обработку сообщений. На рис. 20.26 показано место, куда был вставлен новый программный блок.

Теперь, после компиляции приложения, в результате щелчка правой кнопкой мыши в окне текстового редактора отобразится небольшое окошко, содержащее текущее время (рис. 20.27).




Рис. 20.25. В приложение добавляется обработчик сообщений, связанных с нажатием правой кнопки мыши


Рис. 20.26. Добавление функции OnRButtonDown



1 ... 125 126 127 [ 128 ] 129 130 131 ... 150

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика