// Обработчики команд от панели управления 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)

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

ON_COMMAND_RANGE(ID_UNDERLINE, ID_MARK_4, BarCommandRange)

Для перехвата командных сообщений от панели управления Player и Style используются макрокоманды ON_COMMAND и ON_COMMAND_RANGE. Макрокоманда ON_COMMAND вызывает метод, указанный во втором параметре командного сообщения, соответствующего идентификатору, приведенному в первом параметре. Макрокоманда ON_COMMAND_RANGE. работает аналогично ON_COMMAND, но позволяет вызвать метод обработчик, указанный в третьем параметре, сразу для нескольких командных сообщений. Идентификаторы обрабатываемых сообщений находятся в промежутке значений, указанных первым и вторым параметрами макрокоманды.

Для обработки командных сообщений от кнопок панели управления Extended мы также используем метод BarCommandRange. Исключение составляет только кнопка ID_ADD. Сообщения от этой кнопки обрабатываются методом AddStringToComboBox класса CMultiBarWindow:

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

ON_COMMAND(ID_ADD, AddStringToComboBox)

ON_COMMAND_RANGE(ID_FOTO, ID_DISK,  BarCommandRange)

В таблице сообщений класса CMultiBarWindow также расположены макрокоманды для обработки командных сообщений от меню View. Для их обработки используется метод ShowStyle класса CMultiBarWindow:

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

ON_COMMAND_EX(ID_Style, ShowStyle)

ON_COMMAND_EX(ID_Extended, ShowStyle)

ON_COMMAND_EX(ID_Player, ShowStyle)

Командные сообщения от всех строк меню View обрабатываются одним методом ShowStyle,  однако его вызов осуществляется с помощью макрокоманды ON_COMMAND_EX. Эта макрокоманда вызывает для обработки командного сообщения с идентификатором, заданным первым параметром, метод указанный во втором параметре. В отличие от макрокоманды ON_COMMAND, макрокоманда ON_COMMAND_EX передает методу-обработчику идентификатор полученного командного сообщения.

Метод ShowStyle использует этот идентификатор, чтобы определить какая строка меню была выбрана.

Методы BarCommandOne и BarCommandRange класса CMultiBarWindow

Методы BarCommandOne и BarCommandRange определены в классе главного окна приложения CMultiBarWindow и используются для обработки сообщений от кнопок панелей управления.

Фактически методы BarCommandOne и BarCommandRange не выполняют никакой полезной работы. Единственное, что делает метод BarCommandOne, – это отображает на экране сообщение о том, что выбранная вами команда не реализована. Для этого мы используем метод MessageBox:

void CMultiBarWindow::BarCommandOne {

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

 MessageBox("Command not implemented");

}

Метод BarCommandRange вообще не выполняет никакой полезной работы. Однако не спешите исключать его из программы. Если вы удалите методы BarCommandOne и BarCommandRange из программы и удалите соответствующие макрокоманды из таблицы сообщений класса окна, тогда все кнопки, для обработки сообщений от которых использовались эти методы, окажутся заблокированы. MFC определит, что сообщения от кнопок не обрабатываются и запретит их использование:

void CMultiBarWindow::BarCommandRange(UINT nID) {

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

}

Метод AddStringToComboBox класса CMultiBarWindow

Метод AddStringToComboBox класса CMultiBarWindow выполняет обработку командных сообщений от кнопки ID_ADD панели управления Extended. Для этого он сначала считывает строку, введенную в текстовом редакторе m_edit, а затем добавляет ее в список m_combo_box:

void CMultiBarWindow::AddStringToComboBox {

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

 char  tmpStr[39];

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

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

Перейти на страницу:

Похожие книги