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

ЖАНРЫ

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

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

Шрифт:

Методика размещения полосы progress bar на панели состояния достаточно проста. В тот момент, когда потребуется вывести полосу progress bar, просто создайте ее, указав в качестве родительского окна панель состояния. Координаты линейного индикатора progress bar желательно выбрать таким образом, чтобы он отображался на месте одного из индикаторов. Предварительно вы можете убрать рамку с этого индикатора и заблокировать его так, чтобы в нем не отображался текст.

Приложение Status

Создайте новый проект под названием Status. В качестве типа приложения выберите из списка Type строку Application.

Настройте проект Status, указав, что приложение будет работать с библиотекой классов MFC.

Наберите в редакторе исходный текст приложения и сохраните его в файле Status.cpp (листинг 3.13). Включите готовый файл DialogBar.cpp в проект.

Листинг 3.13. Файл Status.cpp

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

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

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

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

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

// Включаемые файлы для MFC

#include <afxwin.h>

#include <afxext.h>

#include <afxcmn.h>

// Включаемый файл для ресурсов приложения и идентификаторов

#include "resource.h"

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

// Класс CStateApp – главный класс приложения

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

class CStateApp : public CWinApp {

public:

 // Мы будем переопределять метод InitInstance,

 // предназначенный для инициализации приложения

 virtual BOOL InitInstance;

};

// Создаем объект приложение класса CStateApp

CStateApp StateApp;

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

// Класс CStateWindow – представляет главное окно

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

class CStateWindow : public CFrameWnd {

protected:

 CStatusBar m_wndStatusBar; // Панель состояния

 BOOL bIndicatorTEXT; // Флаг для управления

// индикатором

// ID_INDICATOR_TEXT

protected:

 // Метод для создания окна приложения и панели состояния

 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

public:

 //
Объявляем конструктор класса CStateWindow

 CStateWindow;

 // Объявляем методы для обработки команд меню

 afx_msg BOOL OnMenuDirectADD_SUB(UINT nID);

 afx_msg void OnMenuProcessBar;

 afx_msg void OnMenuDisableADD_SUB;

 afx_msg void OnMenuSwitchTEXT;

 afx_msg void OnMenuExit;

 // Метод для обработки команды ON_UPDATE_COMMAND_UI

 // от индикатора ID_INDICATOR_TEXT

 afx_msg void OnUpdateTEXT(CCmdUI* pCmdUI);

 // Макрокоманда необходима, так как класс

 // CStateWindow обрабатывает сообщения

 DECLARE_MESSAGE_MAP

};

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

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

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

BEGIN_MESSAGE_MAP(CStateWindow, CFrameWnd)

 // Макрокоманда вызывает метод OnCreate

 ON_WM_CREATE

 // Обработчик сообщения ON_UPDATE_COMMAND_UI

 ON_UPDATE_COMMAND_UI(ID_INDICATOR_TEXT, OnUpdateTEXT)

 // Обработчики команд меню Work

 ON_COMMAND(ID_WORK_PROCESS, OnMenuProcessBar)

 ON_COMMAND(ID_WORK_DISABLE_ADDSUB, OnMenuDisableADD_SUB)

 ON_COMMAND(ID_WORK_ON_SWITCH_TEXT, OnMenuSwitchTEXT)

 ON_COMMAND_EX(ID_WORK_DIRECT_ADD, OnMenuDirectADD_SUB)

 ON_COMMAND_EX(ID_WORK_DIRECT_SUB, OnMenuDirectADD_SUB) 

 ON_COMMAND(ID_WORK_EXIT, OnMenuExit)

END_MESSAGE_MAP

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

// Индикаторы панели управления. Порядок идентификаторов

// соответствует порядку индикаторов в панели состояния

// (до тех пор, пока он не изменен методом SetPaneInfo)

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

static UINT indicators[] = {

 ID_SEPARATOR, // Самый первый индикатор

 ID_INDICATOR_OVR, // Индикатор OVR

 ID_INDICATOR_PROGRESS, // Резервирование места для

// progress bar

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