KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Александр Фролов - Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2

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

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Александр Фролов, "Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2" бесплатно, без регистрации.
Перейти на страницу:

Метод Create возвращает ненулевое значение в случае успешного создания панели или нуль в случае ошибки.

После того как вы создали панель управления, надо загрузить ресурс панели управления. Для этого предназначен метод LoadToolBar класса CToolBar. Метод LoadToolBar имеет две реализации:

BOOL LoadToolBar(LPCTSTR lpszResourceName);

BOOL LoadToolBar(UINT nIDResource);

В качестве параметра lpszResourceName следует указать имя ресурса панели управления. Если вы знаете идентификатор ресурса панели управления, используйте второй прототип метода и укажите идентификатор в качестве параметра nIDResource.

Если загрузка ресурса прошла успешно, метод LoadToolBar возвращает ненулевое значение. В случае ошибки возвращается нуль.

В Microsoft Visual C++ версии 2.х и более ранних версиях ресурс типа toolbar отсутствует. Вместо этого ресурса в файле ресурсов приложения записывалось только изображение кнопок панели управления. А вместо метода LoadToolBar класса CToolBar использовались вызовы двух других методов этого же класса – LoadBitmap и SetButtons.

Метод LoadBitmap загружал из ресурсов приложения изображение кнопок панели управления, а метод SetButtons устанавливал соответствие каждой кнопке панели управления ее изображения и идентификатора. Так как при создании новых приложений лучше использовать новый метод для отображения панелей управления, предполагающий работу с ресурсами toolbar и методом LoadToolBar, то мы не будем останавливаться на методах LoadBitmap и SetButtons.

На этом создание панели управления можно считать оконченным. Теперь ваше приложение имеет полноценную панель управления. Однако стоит изучить еще несколько методов класса CToolBar и его базового класса CControlBar , которые помогут сделать панель управления еще более удобной для пользователя.

Метод SetBarStyle класса CControlBar

Во время создания панели управления вы можете указать ее характеристики через параметр dwStyle метода Create. Если вам потребовалось изменить эти характеристики уже во время работы приложения – используйте метод SetBarStyle. Метод SetBarStyle определен в классе CControlBar, который является базовым для класса CToolBar:

void SetBarStyle(DWORD dwStyle);

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

Флаг Описание CBRS_ALIGN_TOP Панель управления можно пристыковать к верхней границе окна CBRS_ALIGN_BOTTOM Панель управления можно пристыковать к нижней границе окна CBRS_ALIGN_LEFT Панель управления можно пристыковать к левой границе окна CBRS_ALIGN_RIGHT Панель управления можно пристыковать к правой границе окна CBRS_ALIGN_ANY Панель управления можно пристыковать к любой границе окна CBRS_TOOLTIPS Для кнопок панели управления отображаются их краткие описания в окнах tool tips CBRS_FLYBY Панель состояния отображает краткое описание выбранной кнопки Метод GetBarStyle класса CControlBar

Чтобы определить текущие характеристики панели управления, используйте метод GetBarStyle класса CControlBar. Метод GetBarStyle возвращает комбинацию флагов. Подробное описание флагов смотрите выше, в описании метода SetBarStyle:

DWORD GetBarStyle();

Перед тем как продолжить изучение панелей управления, приведем приложение Bar, которое имеет панель управления, состоящую из нескольких кнопок.

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

Вы уже знаете, насколько просто добавить новые кнопки к панели управления, если приложение создано с помощью средств автоматизированной разработки 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: [email protected]

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

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

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

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

}

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*