// Исключаем редко используемые определения из 
// включаемых файлов
#define VC_EXTRALEAN

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

// Включаемый файл для ресурсов приложения
#include "resource.h"

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

protected:  // control bar embedded members
   CToolBar    m_wndToolBar;
   
protected:
   afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

public:
   // Объявляем конструктор класса CBarWindow
   CBarWindow();

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

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

//===================================================== 
// Метод BarCommand
// Обрабатывает команду ID_TEST_BEEP
//===================================================== 
void CBarWindow::BarCommand()
{
   MessageBox("Command not implemented");	
}

//===================================================== 
// Таблица сообщений класса CBarWindow
//===================================================== 
BEGIN_MESSAGE_MAP(CBarWindow, CFrameWnd)
   ON_WM_CREATE()
   ON_COMMAND(ID_FILE_OPEN, CBarWindow::BarCommand)
   ON_COMMAND(ID_FILE_SAVE, CBarWindow::BarCommand)
   ON_COMMAND(ID_TOOL_EXIT, CBarWindow::BarCommand)
END_MESSAGE_MAP()

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

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

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

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

//===================================================== 
// Метод OnCreate класса CBarWindow
// Вызывается во время создания окна приложения
//===================================================== 
int CBarWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
   // Вызываем метод OnCreate базового класса
   if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
      return -1;

   // Создаем панель управления toolbar. В качестве 
   // родительского окна указываем окно CBarWindow
   if (!m_wndToolBar.Create(this))
   {
      // Ошибка при создании панели управления
      TRACE0("Failed to create toolbar\n");
      return -1;
   }
	
   if (!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
   {
      // Ошибка при загрузке ресурса панели управления
      TRACE0("Failed to load toolbar\n");
      return -1;
   }

   return 0;
}
