Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс 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);