Microsoft Visual C++ и MFC. Программирование для Win95 и WinNT

         

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


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

Чтобы подробнее разобраться с устройством и возможностями панелей управления, гораздо лучше взять маленькое приложение, программный код которого можно охватить буквально одним взглядом. Возьмем за основу приложение MFStart с одним единственным окном, представленное нами в первой книге серии “Библиотека системного программиста”, посвященной программированию в Microsoft Visual C++ с применением классов MFC.

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

Создайте новый проект под названием Bar. В качестве типа приложения выберите из списка Type строку Application. Выберите из меню Build строку Settings или нажмите комбинацию клавиш <Alt+F7>. На экране появится диалоговая панель Project Settings. В этой панели расположены несколько страниц, позволяющих настроить различные характеристики проекта.

Откройте страницу General. Выберите из списка Microsoft Foundation Classes строку Use MFC in a Shared Dll или строку Use MFC in a Static Library. Эта настройка указывает Microsoft Visual C++, что в приложении используются классы библиотеки MFC.

Наберите в редакторе исходный текст приложения и сохраните его в файле Bar.cpp (листинг 3.4). Затем включите этот файл в проект. Для простоты мы включили в один файл весь программный код приложения.

Листинг 3.4. Файл Bar.cpp

//============================================================

// Приложение Bar

// (c) Frolov G.V., 1996

// E-mail: frolov@glas.apc.org

//============================================================

// Исключаем редко используемые определения из


// включаемых файлов

#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 MyBarApp;

 

//============================================================

// Класс 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;

}

Теперь необходимо создать ресурс панели управления toolbar. Вы можете сделать это несколькими способами - создать панель управления “с нуля” или скопировать уже готовую панель управления из другого приложения, например из приложения Multi, представленного в главе “Многооконное приложение”.

Перед тем как приступить к разработке панели управления, создайте файл ресурсов и включите его в проект. Для этого выберите из меню File строку New. Из открывшейся диалоговой панели New выберите строку Resource Script и нажмите на кнопку OK. Будет создан пустой файл ресурсов. Сохраните его в каталоге приложения под именем Bar.rc и включите в проект.


Содержание раздела