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




Метод OnMenuDirectADD_SUB класса CStateWindow


Когда пользователь выбирает из меню Work строки Direct set ADD и Direct set SUB, в класс окна поступают командные сообщения с идентификаторами ID_WORK_DIRECT_ADD и ID_WORK_DIRECT_SUB. Для их обработки вызывается метод OnMenuDirectADD_SUB:

ON_COMMAND_EX(ID_WORK_DIRECT_ADD, OnMenuDirectADD_SUB)

ON_COMMAND_EX(ID_WORK_DIRECT_SUB, OnMenuDirectADD_SUB)

В качестве параметра nID методу OnMenuDirectADD_SUB передается соответствующий идентификатор:

BOOL  CStateWindow::OnMenuDirectADD_SUB(UINT nID)

{

}

Порядок индикаторов в панели состояния не меняется, например, индикатор с идентификатором ID_INDICATOR_ADD, всегда будет иметь в нашем приложении индекс 7. Однако чтобы продемонстрировать метод CommandToIndex и сделать метод OnMenuDirectADD_SUB более независимым от расположения индикаторов, мы определяем индекс индикатора ID_INDICATOR_ADD:

int nIndex = m_wndStatusBar.CommandToIndex(ID_INDICATOR_ADD);

Следующим шагом мы устанавливаем нормальный режим отображения индикатора ID_INDICATOR_ADD. Для этого вызываем метод SetPaneStyle, указав ему индекс индикатора и атрибут SBPS_NORMAL:

m_wndStatusBar.SetPaneStyle(nIndex, SBPS_NORMAL);

Затем определяем, какое командное сообщение послужило причиной вызова метода OnMenuDirectADD_SUB. Если метод вызван для обработки командного сообщения от строки Direct set ADD меню Work, отображаем в индикаторе текст ADD:

if(nID == ID_WORK_DIRECT_ADD)

{

   // Выводим текст ADD

   m_wndStatusBar.SetPaneText(nIndex, "ADD");

}

Если метод OnMenuDirectADD_SUB вызван для обработки командного сообщения от строки Direct set SUB меню Work, изменяем внешний вид индикатора и отображаем в нем текст SUB:

else if(nID == ID_WORK_DIRECT_SUB)

{

   // Изменяем внешний вид индикатора

   m_wndStatusBar.SetPaneStyle(nIndex, SBPS_POPOUT);

   // Выводим текст SUB

   m_wndStatusBar.SetPaneText(nIndex, "SUB");

}

Для вывода текста в индикаторе ID_INDICATOR_ADD в методе OnMenuDirectADD_SUB мы используем метод SetPaneText класса CStatusBar. Метод SetPaneText не меняет размера индикатора. Поэтому, если вы желаете отобразить текст большей длины, надо увеличить размер индикатора с помощью метода SetPaneInfo.




Содержание  Назад  Вперед