Визуальное программирование и MFC


Дополнительные возможности панели управления


Панель управления, созданная на основе класса CToolBar, состоит из одних только кнопок или разделителей. Стандартные средства для отображения в ней других элементов управления отсутствуют.

Однако, так как панель управления является не чем иным, как дочерним окном, можно самостоятельно разместить в нем другие элементы управления. Для этого предполагается сделать следующие шаги:

  • В том месте ресурса панели управления TOOLBAR, где предполагается вставить дополнительный орган управления, следует вставить разделитель SEPARATOR.
  • Сразу после создания панели управления необходимо изменить размер разделителя, вместо которого надо вставить другой элемент управления, и присвоить ему другой идентификатор.
  • Создать на месте разделителя нужный элемент управления, указав для него в качестве родительского окна идентификатор панели управления.

В класс CToolBar входит метод SetButtonInfo. Этот метод позволяет изменить внешний вид панели управления. Используя этот метод, можно изменить идентификатор, изображение, режим работы и размер разделителей кнопок панели управления. Для определения текущих характеристик кнопок панели можно воспользоваться методом GetButtonInfo класса CToolBar.

Когда на панели создается дополнительный элемент управления, то необходимо указать координаты прямоугольной области, которую он будет занимать. Для определения этих координат следует воспользоваться методом GetItemRect класса CToolBar. Вызов этого метода заполняет структуру типа RECT координатами прямоугольной области, занимаемой кнопкой или разделителем, с индексом nIndex.

Рассмотрим пример создания панели управления с дополнительными элементами - полем редактирования и выпадающим списком. Предварительно создадим два новых идентификатора ID_EDIT и ID_COMBO:

#define ID_EDIT 101 #define ID_COMBO 102

Затем необходимо создать новый класс панелей управления на базе класса CToolBar библиотеки MFC:

class CExtendedBar : public CToolBar { public: // дополнительные элементы управления CEdit m_edit; CComboBox m_combo; };




Начало  Назад  Вперед