|
Программирование >> Процедурные приложения
НЕ РЕДАКТИРУЙТЕ то,что здесь находится. }}AFX MSG MAP Стандартные операции с документами ON COMMAND(ID FILE NEW, CWinApp::OnFileNew) ON COMMAND(ID FILE OPEN, CWinApp::OnFileOpen) END MESSAGE MAP() {{AFX DATA INIT(CAboutDlg) }}AFX DATA INIT void CAboutDlg::DoDataExchange(CDataExchange* pDX) f CDialog::DoDataExchange(pDX); ({AFX DATA MAP(CAboutDlg) }}AFX DATA MAP i BEGIN MESSAGE MAP (CAboutDlg, CDialog) { (AFX MSG MAP (CAboutDlg) }}AFX MSG MAP END MESSAGE MAP ( ) Функция, управляющая выводом окна About void CGraphApp : : OnAppAbout ( ) CAboutDlg aboutDlg; aboutDlg . DoModal ( ) ;
Другие функции класса CGraphApp Первая схема сообщений, содержащаяся в этом файле, принадлежит классу CGraphApp. В ней сообщения с идентификаторами id app about, id file new и ID FILE OPEN связываются С обработчиками OnAppAbout() , CWinApp: :OnFileNew()и CWinApp: :OnFileOpen(). В файле содержатся реализации конструктора класса CGraphApp, а также его методов initinstance() и OnAppAbout(). Диалоговое окно About принадлежит классу CAboutDlg, являющемуся потомком класса CDialog. У него имеется схема сообщений, конструктор и метод DoDataExchange (). Файл MAINFRM.CPP Файл MAINFRM.CPPсодержит реализацию класса CMainFrame, который порождается от класса CFrameWnd и управляет SDI-окном приложения. MainFrm.cpp: реализация класса CMainFrame #include stdafx.h #include Graph.h #include MainFrm.h #ifdef DEBUG #def ine new DEBUG NEW #undef THIS FILE static char THIS FILE[]= FILE #endif
1 1 CMainFrame IMPLEMENT DYNCREATE (CMainFrame, CFrameWnd) BEGIN MESSAGE MAP (CMainFrame, CFrameWnd) { (AFX MSG MAP (CMainFrame) ПРИМЕЧАНИЕ: мастер классов будет добавлять и удалять здесь макросы схемы сообщений. НЕ РЕДАКТИРУЙТЕ то, что здесь находится. }}AFX MSG MAP END MESSAGE MAP ( )
I 1 Конструктор и деструктор класса CMainFrame CMainFrame:: CMainFrame() { TODO: здесь добавьте код конструктора, } CMainFrame::-CMainFrame() BOOL CMainFrame::PreCreateWindow(CREATESTRUCT Ses) { if(ICFrameWnd::PreCreateWindow(cs)) returnFALSE; TODO: здесь можно модифицировать класс окна, изменяя поля структуры cs. return TRUE; }
Диагностика класса CMainFrame #ifdef DEBUG void CMainFrame: :AssertValid()const CFrameWnd: :AssertValid() ; void CMainFrame: : Dump (CDumpContext &dc) const { CFrameWnd: : Dump (dc); #endif DEBUG
Обработчики сообщений класса CMainFrame Внимательно просмотрев этот листинг, вы заметите, что конструктор и деструктор не содержат никакого кода, обработчики сообщений отсутствуют, а для функций AssertValid(), Dump() и PreCreateWindow() вызываются одноименные методы базового класса. Файл GRAPHDOC.CPP Файл GRAPHDOC.CPP содержит реализацию класса CGraphDoc, который управляет работой с документом, а также обеспечивает загрузку и сохранение данных документа. GraphDoc.cpp: реализация класса CGraphDoc #include stdafx.h #include Graph. h #include GraphDoc. h tifdef DEBOG #define new DEBUGJSIEW #undef THIS FILE static char THIS FILE [ ] = FILE ; #endif
CGraphDoc IMPLEMENT DYNCREATE (CGraphDoc, CDocument) BEGIN MESSAGE MAP (CGraphDoc, CDocument) ( (AFX MSGJXIAP (CGraphDoc) ПРИМЕЧАНИЕ: мастер классов будет добавлять и удалять здесь макросы схемы сообщений. НЕ РЕДАКТИРУЙТЕ то,что здесь находится. }}AFX MSG MAP END MESSAGE MAP ( ) II Конструктор и деструктор класса CGraphDoc CGraphDoc:: CGraphDoc() { TODO: здесь добавьте код конструктора CGraphDoc::-CGraphDoc () BOOL CGraphDoc::OnNewDocument() if (ICDocument::OnNewDocument{)) return FALSE; : TODO: здесь добавьте код повторной инициализации (специфика SDI-приложений). return TRUE; )
Сериализация класса CGraphDoc void CGraphDoc: : Serialize (CArchive Sar) { if (ar . IsStoring () ) { TODO: здесь добавьте код сохранения } else{ TODO: здесь добавьте код загрузки } }
Диагностика класса CGraphDoc fifdef DEBUG void CGraphDoc::AssertValid() const CDocument::AssertValid(); } void CGraphDoc: : Dump (CDumpContext Sdc) const f CDocument :: Dump (dc); ) #endif DEBUG
Другие функции класса CGraphDoc Проанализировав этот листинг, вы вновь обнаружите, что схема сообщений, конструктор и деструктор класса пусты. Для остальных четырех функций вызываются их реализации из базового класса. Функция Serializedреализует концепцию постоянства документа. В следующем примере посредством этой функции будет организован файловый ввод/вывод данных документа. Файл GRAPHVBEW.CPP Файл GRAPHVIEW.CPP содержит реализацию класса CGraphview, который порождается от класса CView и отвечает за отображение документа. GraphView.cpp: реализация класса CGraphView #include stdafx.h #include Graph. h #include GraphDoc.h #include GraphView.h #ifdef DEBUG #define new DEBUG NEW #undef THIS FILE static char THIS FILE[] = FILE ; #endif
CGraphview IMPLEMENT DYNCREATE (CGraphview, CView) BEGIN MESSAGE MAP (CGraphview, CView) ( {AFX MSG MAP (CGraphview) ON WM PAINT() }}AFX MSG MAP END MESSAGE MAP ( ) 368
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |