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


              

Метод GetControlBar класса CFrameWnd определяет


#define AFX_IDW_TOOLBAR      0xE800

#define AFX_IDW_STATUS_BAR   0xE801

#define ID_VIEW_TOOLBAR      0xE800

#define ID_VIEW_STATUS_BAR   0xE801

Метод GetControlBar класса CFrameWnd определяет указатель на объект класса CControlBar, который представляет панель управления или панель состояния с идентификатором nID. Идентификаторы строк меню ID_VIEW_TOOLBAR и ID_VIEW_STATUS_BAR соответствуют стандартным идентификаторам панели управления AFX_IDW_TOOLBAR и панели состояния AFX_IDW_STATUS_BAR. 

При выборе из меню View строки Toolbar передается командное сообщение ID_VIEW_TOOLBAR, а при выборе строки Status bar - сообщение ID_VIEW_STATUS_BAR. Во время обработки этих сообщений, вызов метода GetControlBar определит объект класса CControlBar, соответствующий либо панели управления AFX_IDW_TOOLBAR, либо панели состояния AFX_IDW_STATUS_BAR.

Затем метод ShowControlBar отображает или закрывает соответствующую панель. Если панель была открыта, метод ShowControlBar скрывает ее и наоборот.

Аналогичным образом устроен метод OnUpdateControlBarMenu класса CFrameWnd, который обрабатывает команды обновления (по умолчанию, он обрабатывает команды обновления от строк Toolbar и Status bar меню View).

Метод OnUpdateControlBarMenu проверяет, отображается ли на экране панель управления или панель состояния с идентификатором, соответствующим идентификатору команды обновления. Если панель отображается, то строка меню отмечается символом Ö:

//////////////////////////////////////////////////////////////

// Метод OnUpdateControlBarMenu класса CFrameWnd

void CFrameWnd::OnUpdateControlBarMenu(CCmdUI* pCmdUI)

{

   ASSERT(ID_VIEW_STATUS_BAR == AFX_IDW_STATUS_BAR);

   ASSERT(ID_VIEW_TOOLBAR == AFX_IDW_TOOLBAR);

   CControlBar* pBar = GetControlBar(pCmdUI->m_nID);

   if (pBar != NULL)

   {

      pCmdUI->SetCheck((pBar->GetStyle() & WS_VISIBLE) != 0);

      return;

   }

   pCmdUI->ContinueRouting();

}

В конце метода OnUpdateControlBarMenu класса CFrameWnd вызывается метод ContinueRouting класса CCmdUI, который направляет команду обновления для дальнейшей обработки другим классам MFC (см. раздел “Обработка командных сообщений”).


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