<p>Как устроено приложение Dater</p>

Список всех классов, входящих в проект Dater, а также их методов можно просмотреть в окне Project Workspace на странице ClassView (рис. 5.16).

Рис. 5.16. Окно Project Workspace, страница ClassView

В приложение Dater входят следующие классы.

КлассБазовый классНазначение
CAboutDlgCDialogУправляет информационной диалоговой панелью About
CDaterAppCWinAppГлавный класс приложения
CDaterDocCDocumentПредставлляет документ приложения
CDaterSetCRecordsetПредставлляет запись таблицы базы данных
CDaterViewCRecordViewУправляет окном просмотра приложения. В этом окне отображаются записи таблицы базы данных
CMainFrameCFrameWndГлавное окно приложения
Главный класс приложения – CDaterApp

Класс CDaterApp приложения Dater не содержит в себе ничего особенного и практически не отличается от соответствующего класса однооконного приложения Single, созданного MFC AppWizard и не работающего с базами данных:

//////////////////////////////////////////////////////////////

// Класс CDaterApp

//

class CDaterApp : public CWinApp {

public:

CDaterApp;

// Overrides

 //{{AFX_VIRTUAL(CDaterApp)

public:

 virtual BOOL InitInstance;

 //}}AFX_VIRTUAL

// Implementation

 //{{AFX_MSG(CDaterApp)

 afx_msg void OnAppAbout;

 //}}AFX_MSG

 DECLARE_MESSAGE_MAP

};

Класс CDaterApp содержит конструктор, а также методы InitInstance и OnAppAbout.

Конструктор класса CDaterApp

Конструктор класса CSingleApp не выполняет никаких действий и состоит из пустого блока:

CDaterApp::CDaterApp {

 // TODO:

}

Метод OnAppAbout класса CDaterApp

Метод OnAppAbout класса CDaterApp вызывается для обработки командного сообщения с идентификатором ID_APP_ABOUT, которое посылается при выборе из меню Help строки About. Этот метод совместно с классом CAboutDlg предназначен для отображения информационной диалоговой панели About (в файле ресурсов она имеет идентификатор IDD_ABOUTBOX). Мы не будем рассматривать этот метод и класс CAboutDlg, так как они не используются для взаимодействия с базой данных.

Метод InitInstance класса CDaterApp

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

BOOL CDaterApp::InitInstance {

#ifdef _AFXDLL

 Enable3dControls;

#else

 Enable3dControlsStatic;

#endif

 LoadStdProfileSettings;

 CSingleDocTemplate* pDocTemplate;

 pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME, RUNTIME_CLASS(CDaterDoc), RUNTIME_CLASS(CMainFrame), RUNTIME_CLASS(CDaterView));

 AddDocTemplate(pDocTemplate);

 CCommandLineInfo cmdInfo;

 ParseCommandLine(cmdInfo);

 if (!ProcessShellCommand(cmdInfo)) return FALSE;

 return TRUE;

}

При создании шаблона документа указывается идентификатор типа документа IDR_MAINFRAME, класс документа приложения CDaterDoc, класс главного окна приложения CMainFrame и класс окна просмотра CDaterView.

В приложении определен целый ряд ресурсов с этим идентификатором – меню, панель управления, таблица акселераторов, пиктограмма и строковый ресурс. Наиболее интересны для нас сейчас меню и панель управления, так как они содержат строки и кнопки, управляющие просмотром записей базы данных.

Подробное описание метода InitInstance главного класса однооконного приложения можно получить в 24 томе серии “Библиотека системного программиста”.

Класс главного окна приложения – CMainFrame

Класс CMainFrame предназначен для управления главным окном приложения. Для этого класса определены конструктор, деструктор, методы PreCreateWindow, OnCreate, AssertValid и Dump. В него также входят два элемента данных m_wndToolBar и m_wndStatusBar, представляющие панель управления и панель состояния:

class CMainFrame : public CFrameWnd {

protected:

Перейти на страницу:

Похожие книги