logo
Фролов Александр

Класс cMainFrame

Класс CMainFrame представляет главное окно нашего приложения. Внутри этого окна отображаются окно просмотра документа, а также панели управления и состояния. Определение класса CMainFrame расположено в файле MainFrm.h.

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

class CMainFrame : public CFrameWnd {

protected:

 CMainFrame();

 DECLARE_DYNCREATE(CMainFrame)

 // Attributes

public:

 // Operations

public:

 // Overrides

 //{{AFX_VIRTUAL(CMainFrame)

 virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

 //}}AFX_VIRTUAL

 // Implementation

public:

 virtual ~CMainFrame();

#ifdef _DEBUG

 virtual void AssertValid() const;

 virtual void Dump(CDumpContext& dc) const;

#endif

protected:

 // Панель управления и панель состояния

 CStatusBar m_wndStatusBar;

 CToolBar m_wndToolBar;

 // Методы, предназначенные для обработки сообщений

protected:

 //{{AFX_MSG(CMainFrame)

 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

 //}}AFX_MSG

 DECLARE_MESSAGE_MAP()

};

Шаблон документов приложения создает объекты класса CMainFrame динамически. Для этого в определении класса указана макрокоманда DECLARE_DYNCREATE, объявлен конструктор, не имеющий параметров, а в файле реализации добавлена макрокоманда IMPLEMENT_DYNCREATE.

// Объекты класса CMainFrame могут создаваться динамически

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

Таблица сообщений класса CMainFrame

Класс CMainFrame может получать и обрабатывать сообщения, поэтому в определении класса указана макрокоманда DECLARE_MESSAGE_MAP, а в файле реализации класса MainFrm.cpp, расположена таблица сообщений.

// Таблица сообщений класса CMainFrame

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

 //{{AFX_MSG_MAP(CMainFrame)

 ON_WM_CREATE()

 //}}AFX_MSG_MAP

END_MESSAGE_MAP()

Изначально в таблице сообщений расположена единственная макрокоманда ON_WM_CREATE. Эта макрокоманда устанавливает для обработки сообщения WM_CREATE метод OnCreate. Как вы знаете, сообщение WM_CREATE передается функции окна сразу после его создания, но до того, как окно появится на экране.