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" бесплатно, без регистрации.
Перейти на страницу:

protected:

 // Панель управления Player

 CToolBar m_wndPlayerBar;

 // Панель управления Style

 CToolBar m_wndStyleBar;

 // Панель управления Extended

 CExtendedBar m_wndExtendedBar;


protected:

 // Метод OnCreate используется для создания

 // панелей управления

 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);


public:

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

 CMultiBarWindow();


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

 // управления

 afx_msg void BarCommandOne();

 afx_msg void BarCommandRange(UINT nID);

 afx_msg void AddStringToComboBox();


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

 afx_msg BOOL ShowStyle(UINT nID);


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

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

 DECLARE_MESSAGE_MAP()   

};


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

// Метод BarCommandRange

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

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

void CMultiBarWindow::BarCommandRange(UINT nID) {

 // Обработчик не выполняет никакой работы

}

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

// Метод BarCommand

// Обрабатывает команды от кнопок панелей управления

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

void CMultiBarWindow::BarCommandOne() {

 // Отображаем сообщение о том, что команда не реализована

 MessageBox("Command not implemented");

}


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

// Метод AddStringToComboBox

// Обрабатывает команду от кнопки Add панели

// управления Extended

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

void CMultiBarWindow::AddStringToComboBox() {

 // Получаем строку, введенную в текстовом редакторе m_edit

 char  tmpStr[39];

 m_wndExtendedBar.m_edit.GetLine(0, tmpStr,40);


 // Добавляем новую строку к списку m_combo_box

 m_wndExtendedBar.m_combo_box.AddString(tmpStr);

}


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

// Метод ShowStyle

// Обрабатывает команды от меню View

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

BOOL CMultiBarWindow::ShowStyle(UINT nID) {

 // Определяем указатель на панель управления,

 // соответствующую идентификатору nID

 CControlBar* pBar = GetControlBar(nID);


 // Определяем, отображается в данный момент панель

 // управления на экране или нет

 BOOL bShow = ((pBar->GetStyle() & WS_VISIBLE) != 0);


 // Изменяем состояние панели управления: если панель

 // управления отображается на экране, удаляем ее с экрана,

 // если нет - отображаем

 ShowControlBar(pBar, !bShow, FALSE);


 return TRUE;

}

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

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

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

BEGIN_MESSAGE_MAP(CMultiBarWindow, CFrameWnd)


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

 ON_WM_CREATE()


 // Обработчики команд от панели управления Player

 ON_COMMAND(ID_STOP, BarCommandOne)

 ON_COMMAND(ID_PLAY, BarCommandOne)

 ON_COMMAND(ID_PAUSE, BarCommandOne)

 ON_COMMAND_RANGE(ID_LEFT, ID_RIGHT, BarCommandRange)

 ON_COMMAND_RANGE(ID_TYPE, ID_WAVE,  BarCommandRange)


 // Обработчики команд от панели управления Extended

 ON_COMMAND(ID_ADD, AddStringToComboBox)

 ON_COMMAND_RANGE(ID_FOTO, ID_DISK,  BarCommandRange)


 // Обработчик команд от панели управления Style

 ON_COMMAND_RANGE(ID_UNDERLINE, ID_MARK_4, BarCommandRange)


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

 ON_COMMAND_EX(ID_Style, ShowStyle)

 ON_COMMAND_EX(ID_Extended, ShowStyle)

 ON_COMMAND_EX(ID_Player, ShowStyle)


END_MESSAGE_MAP()


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

// Метод InitInstance класса CMultiBarApp

// Создает главное окно приложения и отображает его на экране

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

BOOL CMultiBarApp::InitInstance() {

 m_pMainWnd = new CMultiBarWindow();

 m_pMainWnd->ShowWindow(m_nCmdShow);

 m_pMainWnd->UpdateWindow();


 return TRUE;

}


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

// Конструктор класса CMultiBarWindow

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

CMultiBarWindow::CMultiBarWindow() {

 // Создаем окно приложения, соответствующее

 // данному объекту класса CMultiBarWindow

 Create(NULL, "Multi Bar", WS_OVERLAPPEDWINDOW, rectDefault, NULL, MAKEINTRESOURCE(IDR_MENU));

}


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

// Метод OnCreate класса CMultiBarWindow

// Используется для создания панелей управления

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

int CMultiBarWindow::OnCreate(LPCREATESTRUCT lpCreateStruct) {

 // Вызываем метод OnCreate базового класса

 if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1;


 // Разрешаем присоединение панелей управления ко

 // всем сторонам окна CMultiBarWindow

 EnableDocking(CBRS_ALIGN_ANY);


 // Переменные для изменения стилей кнопок

 UINT nBarStyle;

 int nIndex;

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

 // Создаем и отображаем панель управления Player

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

 // Создаем панель управления toolbar

 if (!m_wndPlayerBar.Create(this, WS_CHILD | WS_VISIBLE | CBRS_SIZE_DYNAMIC | CBRS_BOTTOM  | CBRS_TOOLTIPS, ID_Player))   {

  // Ошибка при создании панели управления

  TRACE0("Failed to create toolbarn");

  return -1;

 }


 // Загружаем ресурс панели управления Player

 if (!m_wndPlayerBar.LoadToolBar(IDR_PLAYER)) {

  // Ошибка при загрузке ресурса панели управления

  TRACE0("Failed to load toolbarn");

  return -1;

 }


 // Устанавливаем заголовок панели управления Player

 m_wndPlayerBar.SetWindowText("Player");     


 // Из кнопок с идентификаторами ID_TYPE, ID_CD_DRV и

 // ID_WAVE делаем трехпозиционный переключатель с зависимой

 // фиксацией. Устанавливаем для этих кнопок стиль

 // TBBS_CHECKGROUP

 nIndex = m_wndPlayerBar.CommandToIndex(ID_TYPE);

 nBarStyle = m_wndPlayerBar.GetButtonStyle(nIndex) | TBBS_CHECKGROUP;

 m_wndPlayerBar.SetButtonStyle(nIndex, nBarStyle);


 nIndex = m_wndPlayerBar.CommandToIndex(ID_CD_DRV);

 nBarStyle = m_wndPlayerBar.GetButtonStyle(nIndex) | TBBS_CHECKGROUP;

 m_wndPlayerBar.SetButtonStyle(nIndex, nBarStyle);


 nIndex = m_wndPlayerBar.CommandToIndex(ID_WAVE);

 nBarStyle = m_wndPlayerBar.GetButtonStyle(nIndex) | TBBS_CHECKGROUP;

 m_wndPlayerBar.SetButtonStyle(nIndex, nBarStyle);


 // Из кнопки с идентификатором ID_PAUSE делаем

 // переключатель. Устанавливаем для этой кнопки стиль

 // TBBS_CHECKBOX

 nIndex = m_wndPlayerBar.CommandToIndex(ID_PAUSE);

 nBarStyle = m_wndPlayerBar.GetButtonStyle(nIndex) | TBBS_CHECKBOX;

 m_wndPlayerBar.SetButtonStyle(nIndex, nBarStyle);


 // Разрешаем пристывковывать панель управления Player к

 // любой строке родительского окна

 m_wndPlayerBar.EnableDocking(CBRS_ALIGN_ANY);


 // Пристывковываем панель управления Player к

 // родительскому окну

 DockControlBar(&m_wndPlayerBar);


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

 // Создаем и отображаем панель управления Style

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

 // Создаем панель управления toolbar

 if (!m_wndStyleBar.Create(this, WS_CHILD | WS_VISIBLE | CBRS_SIZE_FIXED | CBRS_TOP | CBRS_TOOLTIPS, ID_Style)) {

  // Ошибка при создании панели управления

  TRACE0("Failed to create toolbarn");

  return -1;

 }


 // Загружаем ресурс панели управления Style

 if (!m_wndStyleBar.LoadToolBar(IDR_STYLE)) {

  // Ошибка при загрузке ресурса панели управления

  TRACE0("Failed to load toolbarn");

  return -1;

 }


 // Устанавливаем заголовок панели управления Style

 m_wndStyleBar.SetWindowText("Style");  


 // Запрещаем пристывковывать панель управления Player к

 // родительскому окну

 m_wndStyleBar.EnableDocking(0);


 // Устанавливаем для кнопки ID_SUBSCRIPT стиль TBBS_WRAPPED

 nIndex = m_wndStyleBar.CommandToIndex(ID_SUBSCRIPT);

 nBarStyle = m_wndStyleBar.GetButtonStyle(nIndex) | TBBS_WRAPPED;

 m_wndStyleBar.SetButtonStyle(nIndex, nBarStyle);


 // Устанавливаем для кнопки ID_TEXT_JUSTIFY стиль

 // TBBS_WRAPPED

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