Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека классов Microsoft Foundation (MFC) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Класс CSplitButton представляет элемент управления с разделением кнопки. Элемент управления "кнопка разделения" реализует поведение по умолчанию, когда пользователь щелкает основную часть кнопки, и отображает раскрывающееся меню, когда пользователь щелкает раскрывающуюся стрелку кнопки.
Синтаксис
class CSplitButton : public CButton
Участники
Открытые конструкторы
| Имя | Описание |
|---|---|
| CSplitButton::CSplitButton | Формирует объект CSplitButton. |
Открытые методы
| Имя | Описание |
|---|---|
| CSplitButton::Create | Создает элемент управления с разделением кнопки с указанными стилями и присоединяет его к текущему CSplitButton объекту. |
| CSplitButton::SetDropDownMenu | Задает раскрывающееся меню, которое отображается, когда пользователь щелкает стрелку раскрывающегося списка текущего элемента управления "Разделить". |
Защищенные методы
| Имя | Описание |
|---|---|
| CSplitButton::OnDropDown | Обрабатывает уведомление BCN_DROPDOWN о том, что система отправляет, когда пользователь щелкает стрелку раскрывающегося списка текущего элемента управления "Разделить". |
Замечания
Класс CSplitButton является производным от класса CButton . Элемент управления "Разделенная кнопка" — это элемент управления "Кнопка", стиль которого BS_SPLITBUTTON. В нем отображается настраиваемое меню, когда пользователь щелкает стрелку раскрывающегося списка. Дополнительные сведения см. в стилях BS_SPLITBUTTON и BS_DEFSPLITBUTTON в стилях кнопки.
На следующем рисунке показан диалоговое окно, содержащее элемент управления пейджера и элемент управления с разделением кнопки (1). Стрелка раскрывающегося списка (2) уже была щелкнуна, и отображается подменю (3).
Иерархия наследования
CSplitButton
Требования
Заголовок: afxcmn.h
Этот класс поддерживается в Windows Vista и более поздних версиях.
Дополнительные требования для этого класса описаны в разделе "Требования к сборке" для общих элементов управления Windows Vista.
CSplitButton::Create
Создает элемент управления с разделением кнопки с указанными стилями и присоединяет его к текущему CSplitButton объекту.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Параметры
dwStyle
[in] Побитовое сочетание стилей (OR), применяемое к элементу управления. Дополнительные сведения см. в разделе "Стили кнопок".
rect
[in] Ссылка на структуру RECT , содержащую позицию и размер элемента управления.
pParentWnd
[in] Указатель, отличный от NULL, к объекту CWnd , который является родительским окном элемента управления.
nID
[in] Идентификатор элемента управления.
Возвращаемое значение
ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.
CSplitButton::CSplitButton
Формирует объект CSplitButton. Параметры конструктора указывают подменю, отображаемую при нажатии пользователем раскрывающейся стрелки элемента управления split button.
CSplitButton();
CSplitButton(
UINT nMenuId,
UINT nSubMenuId)
CSplitButton(CMenu* pMenu)
Параметры
nMenuId
[in] Идентификатор ресурса строки меню.
nSubMenuId
[in] Идентификатор ресурса подменю.
pMenu
[in] Указатель на объект CMenu , указывающий подменю. Объект CSplitButton удаляет CMenu объект и связанный с ним HMENU при CSplitButton выходе объекта из области.
Замечания
Используйте метод CSplitButton::Create, чтобы создать элемент управления с разделением кнопки и присоединить его к объектуCSplitButton.
CSplitButton::OnDropDown
Обрабатывает уведомление BCN_DROPDOWN о том, что система отправляет, когда пользователь щелкает стрелку раскрывающегося списка текущего элемента управления "Разделить".
afx_msg void OnDropDown(
NMHDR* pNMHDR,
LRESULT* pResult);
Параметры
pNMHDR
[in] Указатель на структуру NMHDR, содержащую сведения о уведомлении BCN_DROPDOWN.
pResult
[out] (Не используется; значение не возвращается.) Возвращаемое значение уведомления BCN_DROPDOWN .
Замечания
Когда пользователь щелкает стрелку раскрывающегося списка на элементе управления разделенной кнопкой, система отправляет сообщение BCN_DROPDOWN уведомления, которое OnDropDown обрабатывает метод.
CSplitButton Однако объект не перенаправит уведомление BCN_DROPDOWN в элемент управления, содержащий элемент управления split button. Следовательно, содержащий элемент управления не может поддерживать настраиваемое действие в ответ на уведомление.
Чтобы реализовать пользовательское действие, которое поддерживает содержащий элемент управления, используйте объект CButton со стилем BS_SPLITBUTTON вместо CSplitButton объекта. Затем реализуйте обработчик для уведомления BCN_DROPDOWN в объекте CButton . Дополнительные сведения см. в разделе "Стили кнопок".
Чтобы реализовать настраиваемое действие, которое поддерживает сам элемент управления "Разделить кнопку", используйте отражение сообщений. Наследуйте собственный CSplitButton класс из класса и назовите его, например CMySplitButton. Затем добавьте в приложение следующую карту сообщений для обработки уведомления BCN_DROPDOWN:
BEGIN_MESSAGE_MAP(CMySplitButton,
CSplitButton)
ON_NOTIFY_REFLECT(BCN_DROPDOWN, &CMySplitButton::OnDropDown)
END_MESSAGE_MAP()
CSplitButton::SetDropDownMenu
Задает раскрывающееся меню, которое отображается, когда пользователь щелкает стрелку раскрывающегося списка текущего элемента управления "Разделить".
void SetDropDownMenu(
UINT nMenuId,
UINT nSubMenuId);
void SetDropDownMenu(CMenu* pMenu);
Параметры
nMenuId
[in] Идентификатор ресурса строки меню.
nSubMenuId
[in] Идентификатор ресурса подменю.
pMenu
[in] Указатель на объект CMenu, указывающий подменю. Объект CSplitButton удаляет CMenu объект и связанный с ним HMENU при CSplitButton выходе объекта из области.
Замечания
Параметр nMenuId определяет строку меню, которая представляет собой горизонтальный список элементов строки меню. Параметр nSubMenuId — это отсчитываемый от нуля номер индекса, определяющий подменю, который является раскрывающимся списком элементов меню, связанных с каждым элементом строки меню. Например, обычное приложение содержит меню, содержащее элементы строки меню, "Файл", "Изменить" и "Справка". В строке меню "Файл" есть подменю, содержащая элементы меню", "Открыть", "Закрыть" и "Выйти". Когда щелкает стрелку раскрывающегося списка элемента управления split-button, элемент управления отображает указанный подменю, а не строку меню.
На следующем рисунке показан диалоговое окно, содержащее элемент управления пейджера и элемент управления с разделением кнопки (1). Стрелка раскрывающегося списка (2) уже была щелкнуна, и отображается подменю (3).
Пример
Первая инструкция в следующем примере кода демонстрирует метод CSplitButton::SetDropDownMenu . Мы создали меню с редактором ресурсов Visual Studio, который автоматически назвал идентификатор строки меню IDR_MENU1. Параметр nSubMenuId , который равен нулю, ссылается на единственную подменю строки меню.
// Initialize the dropdown menu of the splitbutton control.
m_splitButton.SetDropDownMenu(IDR_MENU1, 0);
// Create the pager control.
BOOL nRet;
CRect rect;
GetClientRect(&rect);
nRet = m_pager.Create(
(WS_VISIBLE | WS_CHILD | PGS_HORZ),
CRect(rect.Width() / 4, 5, (rect.Width() * 3) / 4, 55),
this,
IDC_PAGER1);
m_pager.GetClientRect(&rect);
nRet = m_button.Create(
_T("This is a very, very long button. 012345678901234567890"),
(WS_VISIBLE | WS_CHILD), // Do not use CCS_NORESIZE.
CRect(0, 0, rect.Width(), 30),
&m_pager, IDC_BUTTON1);
m_pager.SetChild(m_button.m_hWnd);
m_pager.SetButtonSize(20);
m_pager.SetBorder(1);