|
Программирование >> Процедурные приложения
Файл 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
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |