Поделиться через


Класс CMFCDropDownToolbarButton

Тип кнопки панели инструментов, который при нажатии ведет себя как обычная кнопка. Однако он открывает раскрывающийся список панели инструментов ( класс CMFCDropDownToolBar, если пользователь нажимает и удерживает кнопку панели инструментов вниз.

Синтаксис

class CMFCDropDownToolbarButton : public CMFCToolBarButton

Участники

Открытые конструкторы

Имя Описание
CMFCDropDownToolbarButton::CMFCDropDownToolbarButton Формирует объект CMFCDropDownToolbarButton.
CMFCDropDownToolbarButton::~CMFCDropDownToolbarButton Деструктор.

Открытые методы

Имя Описание
CMFCDropDownToolbarButton::CopyFrom Копирует свойства другой кнопки панели инструментов на текущую кнопку. (Переопределения CMFCToolBarButton::CopyFrom.)
CMFCDropDownToolbarButton::CreateObject Используется платформой для создания динамического экземпляра этого типа класса.
CMFCDropDownToolbarButton::D ropDownToolbar Открывает раскрывающийся список инструментов.
CMFCDropDownToolbarButton::ExportToMenuButton Копирует текст из кнопки панели инструментов в меню. (Переопределения CMFCToolBarButton::ExportToMenuButton.)
CMFCDropDownToolbarButton::GetDropDownToolBar Извлекает раскрывающуюся панель инструментов, связанную с кнопкой.
CMFCDropDownToolbarButton::GetThisClass Используется платформой для получения указателя на объект CRuntimeClass , связанный с этим типом класса.
CMFCDropDownToolbarButton::IsDropDown Определяет, открыта ли в настоящее время раскрывающаяся панель инструментов.
CMFCDropDownToolbarButton::IsExtrasize Определяет, может ли кнопка отображаться с расширенной границей. (Переопределения CMFCToolBarButton::IsExtrasize.)
CMFCDropDownToolbarButton::OnCalculateSize Вызывается платформой для вычисления размера кнопки для указанного контекста устройства и состояния закрепления. (Переопределения CMFCToolBarButton::OnCalculateSize.)
CMFCDropDownToolbarButton::OnCancelMode Вызывается платформой для обработки сообщения WM_CANCELMODE . (Переопределяет CMCToolBarButton::OnCancelMode.)
CMFCDropDownToolbarButton::OnChangeParentWnd Вызывается платформой при вставке кнопки в новую панель инструментов. (Переопределения CMFCToolBarButton::OnChangeParentWnd.)
CMFCDropDownToolbarButton::OnClick Вызывается платформой, когда пользователь нажимает кнопку мыши. (Переопределения CMFCToolBarButton::OnClick.)
CMFCDropDownToolbarButton::OnClickUp Вызывается платформой, когда пользователь освобождает кнопку мыши. (Переопределения CMFCToolBarButton::OnClickUp.)
CMFCDropDownToolbarButton::OnContextHelp Вызывается платформой, когда родительская панель инструментов обрабатывает сообщение WM_HELPHITTEST. (Переопределения CMFCToolBarButton::OnContextHelp.)
CMFCDropDownToolbarButton::OnCustomizeMenu Изменяет предоставленное меню, когда приложение отображает контекстное меню на родительской панели инструментов. (Переопределения CMFCToolBarButton::OnCustomizeMenu.)
CMFCDropDownToolbarButton::OnDraw Вызывается платформой для рисования кнопки с помощью указанных стилей и параметров. (Переопределения CMFCToolBarButton::OnDraw.)
CMFCDropDownToolbarButton::OnDrawOnCustomizeList Вызывается платформой для рисования кнопки в области "Команды " диалогового окна "Настройка ". (Переопределения CMFCToolBarButton::OnDrawOnCustomizeList.)
CMFCDropDownToolbarButton::Serialize Считывает этот объект из архива или записывает его в архив. (Переопределения CMFCToolBarButton::Serialize.)
CMFCDropDownToolbarButton::SetDefaultCommand Задает команду по умолчанию, которую использует платформа, когда пользователь нажимает кнопку.

Элементы данных

Имя Описание
CMFCDropDownToolbarButton::m_uiShowBarDelay Указывает время, которое пользователь должен удерживать кнопку мыши до появления раскрывающейся панели инструментов.

Замечания

Отличается CMFCDropDownToolBarButton от обычной кнопки в том, что она имеет небольшую стрелку в правом нижнем углу кнопки. После нажатия кнопки на раскрывающейся панели инструментов платформа отображает значок на панели инструментов верхнего уровня (кнопка с небольшой стрелкой в правом нижнем углу).

Сведения о реализации раскрывающейся панели инструментов см . в классе CMFCDropDownToolBar.

Объект CMFCDropDownToolBarButton можно экспортировать в объект класса CMFCToolBarMenuButton и отображаться в виде кнопки меню со всплывным меню.

Иерархия наследования

CObject

CMFCToolBarButton

CMFCDropDownToolbarButton

Требования

Заголовок: afxdropdowntoolbar.h

CMFCDropDownToolbarButton::CopyFrom

Копирует свойства другой кнопки панели инструментов на текущую кнопку.

virtual void CopyFrom(const CMFCToolBarButton& src);

Параметры

src
[in] Ссылка на исходную кнопку, из которой следует скопировать.

Замечания

Вызовите этот метод, чтобы скопировать другую кнопку панели инструментов на эту кнопку панели инструментов. src должен иметь тип CMFCDropDownToolbarButton.

CMFCDropDownToolbarButton::CMFCDropDownToolbarButton

Формирует объект CMFCDropDownToolbarButton.

CMFCDropDownToolbarButton();

CMFCDropDownToolbarButton(
    LPCTSTR lpszName,
    CMFCDropDownToolBar* pToolBar);

Параметры

lpszName
[in] Текст кнопки по умолчанию.

pToolBar
[in] Указатель на объект, отображаемый CMFCDropDownToolBar при нажатии кнопки.

Замечания

Вторая перегрузка конструктора копируется в раскрывающийся список первой кнопкой на панели инструментов, указывающей pToolBar .

Как правило, кнопка раскрывающегося списка использует текст из последней используемой кнопки на панели инструментов, указывающей pToolBar . Он использует текст, заданный lpszName, когда кнопка преобразуется в кнопку меню или отображается на вкладке "Команды" диалогового окна "Настройка". Дополнительные сведения о диалоговом окне "Настройка" см. в классе CMFCToolBarsCustomizeDialog.

Пример

В следующем примере показано, как создать объект CMFCDropDownToolbarButton класса. Этот фрагмент кода является частью примера демонстрации Visual Studio.

// Add dropdown resources button
// CMFCToolBarsCustomizeDialog* pDlgCust
// CMFCDropDownToolBar m_wndToolbarResource
pDlgCust->AddButton(_T("Build"), CMFCDropDownToolbarButton(_T("Add Resource"), &m_wndToolbarResource));

Открывает раскрывающийся список инструментов.

BOOL DropDownToolbar(CWnd* pWnd);

Параметры

pWnd
[in] Родительское окно раскрывающегося кадра или NULL для использования родительского окна кнопки раскрывающегося списка.

Возвращаемое значение

Ненулевое значение, если метод выполнен успешно; в противном случае — 0.

Замечания

Метод CMFCDropDownToolbarButton::OnClick вызывает этот метод, чтобы открыть раскрывающийся список инструментов, когда пользователь нажимает и удерживает кнопку панели инструментов вниз.

Эти методы создают раскрывающийся список с помощью метода CMFCDropDownFrame::Create . Если родительская панель инструментов закреплена по вертикали, этот метод размещает раскрывающийся список в левой или правой части родительской панели инструментов в зависимости от соответствия. В противном случае этот метод размещает раскрывающийся список панели инструментов под родительской панелью инструментов.

Этот метод завершается ошибкой, если pWnd имеет значение NULL, а кнопка панели инструментов раскрывающегося списка не имеет родительского окна.

CMFCDropDownToolbarButton::ExportToMenuButton

Копирует текст из кнопки панели инструментов в меню.

virtual BOOL ExportToMenuButton(CMFCToolBarMenuButton& menuButton) const;

Параметры

menuButton
[in] Ссылка на целевую кнопку меню.

Возвращаемое значение

Ненулевое значение, если метод выполнен успешно; в противном случае — 0.

Замечания

Этот метод вызывает реализацию базового класса ( CMFCToolBarButton::ExportToMenuButton), а затем добавляет к целевому меню всплывающее меню, содержащее каждый элемент меню панели инструментов в этой кнопке. Этот метод не добавляет вложенные меню во всплывающее меню.

Этот метод завершается ошибкой, если родительская панель инструментов имеет значение NULL или m_pToolBarреализация базового класса возвращает ЗНАЧЕНИЕ FALSE.

CMFCDropDownToolbarButton::GetDropDownToolBar

Извлекает раскрывающуюся панель инструментов, связанную с кнопкой.

CMFCToolBar* GetDropDownToolBar() const;

Возвращаемое значение

Раскрывающийся список инструментов, связанный с кнопкой.

Замечания

Этот метод возвращает m_pToolBar элемент данных.

CMFCDropDownToolbarButton::IsDropDown

Определяет, открыта ли в настоящее время раскрывающаяся панель инструментов.

BOOL IsDropDown() const;

Возвращаемое значение

Ненулевое значение, если в настоящее время открыта раскрывающаяся панель инструментов; в противном случае — 0.

Замечания

Платформа открывает раскрывающийся список инструментов с помощью метода CMFCDropDownToolbarButton::D ropDownToolbar . Платформа закрывает раскрывающийся список, когда пользователь нажимает левую кнопку мыши в области, отличной от клиента, на панели инструментов раскрывающегося списка.

CMFCDropDownToolbarButton::IsExtrasize

Определяет, может ли кнопка отображаться с расширенной границей.

virtual BOOL IsExtraSize() const;

Возвращаемое значение

Ненулевое значение, если кнопка панели инструментов может отображаться с расширенной границей; в противном случае — 0.

Замечания

Дополнительные сведения о расширенных границах см. в разделе CMFCToolBarButton::IsExtraSize.

CMFCDropDownToolbarButton::m_uiShowBarDelay

Указывает время, которое пользователь должен удерживать кнопку мыши до появления раскрывающейся панели инструментов.

static UINT m_uiShowBarDelay;

Замечания

Время задержки измеряется в миллисекундах. Значение по умолчанию — 500. Можно задать еще одну задержку, изменив значение этого общего элемента данных.

CMFCDropDownToolbarButton::OnCalculateSize

Вызывается платформой для вычисления размера кнопки для указанного контекста устройства и состояния закрепления.

virtual SIZE OnCalculateSize(
    CDC* pDC,
    const CSize& sizeDefault,
    BOOL bHorz);

Параметры

pDC
[in] Контекст устройства, отображающий кнопку.

sizeDefault
[in] Размер кнопки по умолчанию.

bHorz
[in] Состояние док-станции родительской панели инструментов. Этот параметр имеет значение TRUE, если панель инструментов закреплена горизонтально или плавает или false, если панель инструментов закреплена по вертикали.

Возвращаемое значение

Структура SIZE , содержащая размеры кнопки в пикселях.

Замечания

Этот метод расширяет реализацию базового класса ( CMFCToolBarButton::OnCalculateSize), добавив ширину раскрывающейся стрелки в горизонтальное измерение размера кнопки.

CMFCDropDownToolbarButton::OnChangeParentWnd

Вызывается платформой при вставке кнопки в новую панель инструментов.

virtual void OnChangeParentWnd(CWnd* pWndParent);

Параметры

pWndParent
[in] Новое родительское окно.

Замечания

Этот метод переопределяет реализацию базового класса (CMFCToolBarButton::OnChangeParentWnd), очищая текстовую метку (CMFCToolBarButton::m_strText) и задав cmFCToolBarButton::m_bText и CMFCToolBarButton::m_bUserButton элементы данных false.

CMFCDropDownToolbarButton::OnClick

Вызывается платформой, когда пользователь нажимает кнопку мыши.

virtual BOOL OnClick(
    CWnd* pWnd,
    BOOL bDelay = TRUE);

Параметры

pWnd
[in] Родительское окно кнопки панели инструментов.

bDelay
[in] ЗНАЧЕНИЕ TRUE, если сообщение должно обрабатываться с задержкой.

Возвращаемое значение

Ненулевое значение, если кнопка обрабатывает сообщение нажатия; в противном случае — 0.

Замечания

Этот метод расширяет реализацию базового класса CMFCToolBarButton::OnClick, обновляя состояние раскрывающейся панели инструментов.

Когда пользователь нажимает кнопку панели инструментов, этот метод создает таймер, который ожидает продолжительность времени, указанного элементом данных CMFCDropDownToolbarButton::m_uiShowBarDelay элемент данных, а затем открывает раскрывающийся список панели инструментов с помощью метода CMFCDropDownToolbarButton::D ropDownToolbar. Этот метод закрывает раскрывающийся список во второй раз, когда пользователь нажимает кнопку панели инструментов.

CMFCDropDownToolbarButton::OnClickUp

Вызывается платформой, когда пользователь освобождает кнопку мыши.

virtual BOOL OnClickUp();

Возвращаемое значение

Ненулевое значение, если кнопка обрабатывает сообщение нажатия; в противном случае — 0.

Замечания

Этот метод расширяет реализацию базового класса CMFCToolBarButton::OnClickUp путем обновления состояния раскрывающейся панели инструментов.

Этот метод останавливает таймер панели инструментов раскрывающегося списка, если он активен. При открытии откроется панель инструментов раскрывающегося списка.

Дополнительные сведения о раскрывающейся панели инструментов и таймере раскрывающегося списка см. в разделе CMFCDropDownToolbarButton::OnClick.

CMFCDropDownToolbarButton::OnContextHelp

Вызывается платформой, когда родительская панель инструментов обрабатывает сообщение WM_HELPHITTEST.

virtual BOOL OnContextHelp(CWnd* pWnd);

Параметры

pWnd
[in] Родительское окно кнопки панели инструментов.

Возвращаемое значение

Ненулевое значение, если кнопка обрабатывает сообщение справки; в противном случае — 0.

Замечания

Этот метод расширяет реализацию базового класса (CMFCToolBarButton::OnContextHelp), вызывая метод CMFCDropDownToolbarButton::OnClick с параметром bDelay, равным FALSE. Этот метод возвращает значение, возвращаемое CMFCDropDownToolbarButton::OnClick.

Дополнительные сведения о сообщении WM_HELPHITTEST см. в разделе TN028: поддержка справки с учетом контекста.

CMFCDropDownToolbarButton::OnCustomizeMenu

Изменяет предоставленное меню, когда приложение отображает контекстное меню на родительской панели инструментов.

virtual BOOL OnCustomizeMenu(CMenu* pMenu);

Параметры

pMenu
[in] Меню для настройки.

Возвращаемое значение

Этот метод возвращает ЗНАЧЕНИЕ TRUE.

Замечания

Этот метод расширяет реализацию базового класса ( CMFCToolBarButton::OnCustomizeMenu), отключив следующие элементы меню:

  • Копирование изображения кнопки

  • Внешний вид кнопки

  • Изображение

  • Текст

  • Изображение и текст

Переопределите этот метод, чтобы изменить контекстное меню, которое платформа отображает в режиме настройки.

CMFCDropDownToolbarButton::OnDraw

Вызывается платформой для рисования кнопки с помощью указанных стилей и параметров.

virtual void OnDraw(
    CDC* pDC,
    const CRect& rect,
    CMFCToolBarImages* pImages,
    BOOL bHorz = TRUE,
    BOOL bCustomizeMode = FALSE,
    BOOL bHighlight = FALSE,
    BOOL bDrawBorder = TRUE,
    BOOL bGrayDisabledButtons = TRUE);

Параметры

pDC
[in] Контекст устройства, отображающий кнопку.

rect
[in] Ограничивающий прямоугольник кнопки.

pImages
[in] Коллекция изображений панели инструментов, связанных с кнопкой.

bHorz
[in] Состояние док-станции родительской панели инструментов. Этот параметр имеет значение TRUE, если кнопка закреплена горизонтально и FALSE при закреплении кнопки по вертикали.

bCustomizeMode
[in] Указывает, находится ли панель инструментов в режиме настройки. Этот параметр имеет значение TRUE, если панель инструментов находится в режиме настройки и false, если панель инструментов не находится в режиме настройки.

bHighlight
[in] Указывает, выделена ли кнопка. Этот параметр имеет значение TRUE, если кнопка выделена и false, если кнопка не выделена.

bDrawBorder
[in] Указывает, должна ли кнопка отображать ее границу. Этот параметр имеет значение TRUE, если кнопка должна отображать ее границу и FALSE, если кнопка не должна отображать ее границу.

bGrayDisabledButtons
[in] Указывает, следует ли оттенять отключенные кнопки или использовать коллекцию отключенных изображений. Этот параметр имеет значение TRUE, если отключенные кнопки должны быть затеняются и false, если этот метод должен использовать коллекцию отключенных образов.

Замечания

Переопределите этот метод, чтобы настроить рисунок кнопки панели инструментов.

CMFCDropDownToolbarButton::OnDrawOnCustomizeList

Вызывается платформой для рисования кнопки в области "Команды " диалогового окна "Настройка ".

virtual int OnDrawOnCustomizeList(
    CDC* pDC,
    const CRect& rect,
    BOOL bSelected);

Параметры

pDC
[in] Контекст устройства, отображающий кнопку.

rect
[in] Ограничивающий прямоугольник кнопки.

bSelected
[in] Выбрана ли кнопка. Если этот параметр имеет значение TRUE, выбрана кнопка. Если этот параметр имеет значение FALSE, кнопка не выбрана.

Возвращаемое значение

Ширина (в пикселях) кнопки в указанном контексте устройства.

Замечания

Этот метод вызывается диалоговым окном настройки ( вкладка "Команды "), когда кнопка должна отображаться в списке "Рисование владельца".

Этот метод расширяет реализацию базового класса ( CMFCToolBarButton::OnDrawOnCustomizeList), изменив текстовую метку кнопки на имя кнопки (т. е. значение параметра lpszName , переданного конструктору).

CMFCDropDownToolbarButton::Serialize

Считывает этот объект из архива или записывает его в архив.

virtual void Serialize(CArchive& ar);

Параметры

ар
[in] CArchive Объект, из которого выполняется сериализация.

Замечания

Этот метод расширяет реализацию базового класса ( CMFCToolBarButton::Serialize), сериализуя идентификатор ресурса родительской панели инструментов. При загрузке архива ( CArchive::IsLoading возвращает ненулевое значение), этот метод задает m_pToolBar элемент данных на панели инструментов, содержащей сериализованный идентификатор ресурса.

CMFCDropDownToolbarButton::SetDefaultCommand

Задает команду по умолчанию, которую использует платформа, когда пользователь нажимает кнопку.

void SetDefaultCommand(UINT uiCmd);

Параметры

uiCmd
[in] Идентификатор команды по умолчанию.

Замечания

Вызовите этот метод, чтобы указать команду по умолчанию, которую платформа выполняет, когда пользователь нажимает кнопку. Элемент с идентификатором команды, указанным uiCmd , должен находиться на родительской панели инструментов раскрывающегося списка.

См. также

Диаграмма иерархии
Классы
Класс CMFCDropDownToolBar
Класс CMFCToolBar
Класс CMFCToolBarMenuButton
Пошаговое руководство. Размещение элементов управления на панели инструментов