Чтение онлайн

ЖАНРЫ

Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2

Фролов Григорий Вячеславович

Шрифт:

 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

 //}}AFX_MSG

 DECLARE_MESSAGE_MAP

};

Мы не стали приводить исходные тексты методов класса CMainFrame, так как они практически не отличаются от методов класса CMainFrame любого другого однооконного приложения созданного MFC AppWizard.

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

Конструктор и деструктор класса CMainFrame не содержат программного кода.

Метод PreCreateWindow класса CMainFrame

Метод PreCreateWindow

вызывает метод PreCreateWindow базового класса CFrameWnd и выполняет обработку по умолчанию.

Метод OnCreate класса CMainFrame

Метод OnCreate класса CMainFrame создает главное окно приложения, и размещает в нем панель управления IDR_MAINFRAME и стандаартную панель состояния.

Методы AssertValid и Dump класса CMainFrame

Методы AssertValid и Dump класса CMainFrame могут использоваться при отладке приложения.

Класс документа приложения – CDaterDoc

Класс документа приложения CDaterDoc представляет документ, с которым работает приложение. В него входит элемент m_daterSet класса CDaterSet, также определенного в нашем приложении, который представляет запись базы данных.

Кроме этого элемента в классе CDaterDoc определены конструктор, деструктор, метод OnNewDocument, а также методы AssertValid и Dump:

class CDaterDoc : public CDocument {

protected:

 CDaterDoc;

 DECLARE_DYNCREATE(CDaterDoc)

// Attributes

public:

 CDaterSet m_daterSet;

// Operations

public:

// Overrides

 //{{AFX_VIRTUAL(CDaterDoc)

public:

 virtual BOOL OnNewDocument;

 //}}AFX_VIRTUAL

// Implementation

public:

 virtual ~CDaterDoc;

#ifdef _DEBUG

 virtual void AssertValid const;

 virtual void Dump(CDumpContext& dc) const;

#endif

protected:

 //{{AFX_MSG(CDaterDoc)

 //}}AFX_MSG

 DECLARE_MESSAGE_MAP

};

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

Конструктор и деструктор класса CMainFrame не содержжат программного кода.

Метод PreCreateWindow класса CDaterDoc

Метод OnNewDocument вызывается, когда надо создать новый документ для приложения. Метод OnNewDocument приложения Dater вызывает метод OnNewDocument базового класса CDocument:

BOOL CDaterDoc::OnNewDocument {

 if (!CDocument::OnNewDocument) return FALSE;

 // TODO:

 return TRUE;

}

Методы AssertValid
и Dump класса CDaterDoc

Методы AssertValid и Dump класса CMainFrame могут использоваться при отладке приложения.

Класс окна просмотра приложения – CDaterView

Большой интерес представляет класс окна просмотра приложения CDaterView. В нем содержится указатель m_pSet на объект класса CDaterSet, который представляет запись базы данных. Обратите внимание, что определение указателя находится внутри комментариев вида //{{AFX_DATA. Эти комментарии используются MFC ClassWizard:

class CDaterView : public CRecordView {

protected:

 CDaterView;

 DECLARE_DYNCREATE(CDaterView)

public:

 //{{AFX_DATA(CDaterView)

 enum { IDD = IDD_DATER_FORM };

 CDaterSet* m_pSet;

 //}}AFX_DATA

// Attributes

public:

 CDaterDoc* GetDocument;

// Operations

public:

// Overrides

 //{{AFX_VIRTUAL(CDaterView)

public:

 virtual CRecordset* OnGetRecordset;

 virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

protected:

 virtual void DoDataExchange(CDataExchange* pDX);

 virtual void OnInitialUpdate;

 //}}AFX_VIRTUAL

// Implementation

public:

 virtual ~CDaterView;

#ifdef _DEBUG

 virtual void AssertValid const;

 virtual void Dump(CDumpContext& dc) const;

#endif

protected:

 //{{AFX_MSG(CDaterView)

 //}}AFX_MSG

 DECLARE_MESSAGE_MAP

};

Помимо конструктора и деструктора в классе CDaterView определен целый ряд методов – PreCreateWindow, GetDocument, OnGetRecordset, DoDataExchange, OnInitialUpdate, а также AssertValid и Dump. Опишем наиболее важные из этих методов более подробно.

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

Конструктор класса CMainFrame вызывает конструктор базового класса CRecordView и передает ему в качестве параметра символ IDD, определенный как идентификатор шаблона диалоговой панели IDD_DATER_FORM, используемого окном просмотра.

Конструктор CMainFrame также приваивает указателю m_pSet значение NULL:

CDaterView::CDaterView : CRecordView(CDaterView::IDD) {

 //{{AFX_DATA_INIT(CDaterView)

Поделиться с друзьями: