// Включаемый файл для MFC
#include <afxwin.h>
#include "mfmsgres.h"

//===================================================== 
// Класс CMFMessageApp - главный класс приложения 
//===================================================== 
class CMFMessageApp : public CWinApp
{
public:
	// Мы будем переопределять метод InitInstance,
	// предназначенный для инициализации приложения
	virtual BOOL InitInstance();

	afx_msg void AppMessageCommand();

	// Макрокоманда необходима, так как класс 
	// CMFMessageWindow обрабатывает сообщения
	DECLARE_MESSAGE_MAP()    
};
 
// Создаем объект приложение класса CMFMessageApp
CMFMessageApp MFMessageApp;
 
//===================================================== 
// Класс CMFMessageWindow - представляет главное окно 
//===================================================== 
class CMFMessageWindow : public CFrameWnd
{
public:
	// Объявляем конструктор класса CMFMessageWindow
	CMFMessageWindow();

	// Объявляем методы для обработки команд меню
	afx_msg void FrameMessageCommand();
	afx_msg void ExitApp();

	// Макрокоманда необходима, так как класс 
	// CMFMessageWindow обрабатывает сообщения
	DECLARE_MESSAGE_MAP()    
}; 

//===================================================== 
// Метод MessageCommand
// Обрабатывает команду ID_TEST_BEEP
//===================================================== 
void CMFMessageWindow::FrameMessageCommand()
{
	::MessageBox(NULL, 
		"Command received in CMFMessageWindow Message Map", 
		"Message", MB_OK);
}

//===================================================== 
// Метод MessageCommand
// Обрабатывает команду ID_TEST_BEEP
//===================================================== 
void CMFMessageApp::AppMessageCommand()
{
	::MessageBox(NULL, 
		"Command received in CMFMessageApp Message Map", 
		"Message", MB_OK);
}

//===================================================== 
// Таблица сообщений класса CMFMessageWindow
//===================================================== 
BEGIN_MESSAGE_MAP(CMFMessageWindow, CFrameWnd)
	ON_COMMAND(ID_TEST_INFRAMECLASS, FrameMessageCommand)
	ON_COMMAND(ID_TEST_INBOTHCLASS,	 FrameMessageCommand)
END_MESSAGE_MAP()


//===================================================== 
// Таблица сообщений класса CMFMessageApp
//===================================================== 
BEGIN_MESSAGE_MAP(CMFMessageApp, CWinApp)
	ON_COMMAND(ID_TEST_INAPPCLASS,	AppMessageCommand)
	ON_COMMAND(ID_TEST_INBOTHCLASS,	AppMessageCommand)
END_MESSAGE_MAP()

//===================================================== 
// Метод InitInstance класса CMFMessageApp
//===================================================== 
BOOL CMFMessageApp::InitInstance()
{
	// Создаем объект класса CMFMessageWindow
	m_pMainWnd = new CMFMessageWindow();

	// Отображаем окно на экране
	m_pMainWnd -> ShowWindow(m_nCmdShow);

	// Обновляем содержимое окна
	m_pMainWnd -> UpdateWindow();
	return TRUE;
}

//===================================================== 
// Конструктор класса CMFMessageWindow
//===================================================== 
CMFMessageWindow::CMFMessageWindow()
{ 
	// Создаем окно приложения, соответствующее 
	// данному объекту класса CMFMessageWindow
	Create(NULL, "Hello MFC", WS_OVERLAPPEDWINDOW,
			rectDefault, NULL, MAKEINTRESOURCE(IDR_MENU)); 
}
