Класс CMFCMenuButton
Кнопку, которая отображает контекстное меню и сообщает, какие пункты выбирает в меню пользователь.
Синтаксис
class CMFCMenuButton : public CMFCButton
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CMFCMenuButton::CMFCMenuButton | Формирует объект CMFCMenuButton . |
Открытые методы
Имя | Описание |
---|---|
CMFCMenuButton::P reTranslateMessage | Вызывается платформой для перевода сообщений окна перед отправкой. (Переопределяет CMFCButton::PreTranslateMessage .) |
CMFCMenuButton::SizeToContent | Изменяет размер кнопки в соответствии с размером текста и изображения. |
Элементы данных
Имя | Описание |
---|---|
CMFCMenuButton::m_bOSMenu | Указывает, следует ли отображать всплывающее меню по умолчанию или использовать CContextMenuManager::TrackPopupMenu. |
CMFCMenuButton::m_bRightArrow | Указывает, появится ли всплывающее меню под кнопкой или справа от кнопки. |
CMFCMenuButton::m_bStayPressed | Указывает, изменяет ли кнопка меню состояние после того, как пользователь освобождает кнопку. |
CMFCMenuButton::m_hMenu | Дескриптор подключенного меню Windows. |
CMFCMenuButton::m_nMenuResult | Идентификатор, указывающий элемент, выбранный пользователем во всплывающем меню. |
CMFCMenuButton::m_bDefaultClick | Разрешить обработку по умолчанию (в тексте или изображении кнопки). |
Замечания
Класс CMFCMenuButton
является производным от класса CMFCButton, который, в свою очередь, является производным от класса CButton. Поэтому в коде можно использовать CMFCMenuButton
так же, как и в CButton
коде.
При создании CMFCMenuButton
маркера необходимо передать в связанное всплывающее меню. Затем вызовите функцию CMFCMenuButton::SizeToContent
. CMFCMenuButton::SizeToContent
Проверяет, достаточно ли размер кнопки, чтобы включить стрелку, указывающую на расположение, в котором появится всплывающее окно , а именно под кнопкой или справа от нее.
Пример
В следующем примере показано, как задать дескриптор меню, присоединенного к кнопке, изменить размер кнопки в соответствии с размером текста и изображения и задать всплывающее меню, отображаемое платформой. Этот фрагмент кода является частью примера "Новые элементы управления".
CMFCMenuButton m_btnMenu;
// CMenu m_menu
m_btnMenu.m_hMenu = m_menu.GetSubMenu(0)->GetSafeHmenu();
m_btnMenu.SizeToContent();
// set to FALSE so that the framework calls CContextMenuManager::TrackPopupMenu
// to display its menu
m_btnMenu.m_bOSMenu = FALSE;
Иерархия наследования
Требования
Заголовок: afxmenubutton.h
CMFCMenuButton::CMFCMenuButton
Создает новый объект CMFCMenuButton .
CMFCMenuButton();
CMFCMenuButton::m_bOSMenu
Логическое переменное члена, указывающее всплывающее меню платформы.
BOOL m_bOSMenu;
Замечания
Если m_bOSMenu
значение true, платформа вызывает унаследованный TrackPopupMenu
метод для этого объекта. В противном случае платформа вызывает CContextMenuManager::TrackPopupMenu.
CMFCMenuButton::m_bRightArrow
Логическая переменная-член, указывающая расположение всплывающего меню.
BOOL m_bRightArrow;
Замечания
Когда пользователь нажимает кнопку меню, приложение отображает всплывающее меню. Платформа отобразит всплывающее меню под кнопкой или справа от кнопки. Кнопка также имеет небольшую стрелку, указывающую, где появится всплывающее меню. Если m_bRightArrow
значение true, платформа отображает всплывающее меню справа от кнопки. В противном случае отображается всплывающее меню под кнопкой.
CMFCMenuButton::m_bStayPressed
Логическая переменная члена, указывающая, отображается ли кнопка меню, когда пользователь выбирает из всплывающего меню.
BOOL m_bStayPressed;
Замечания
m_bStayPressed
Если элемент имеет значение FALSE, кнопка меню не нажимается при нажатии кнопки. В этом случае платформа отображает только всплывающее меню.
m_bStayPressed
Если элемент имеет значение TRUE, при нажатии кнопки пользователь нажимает кнопку. Он остается нажимаемым до тех пор, пока пользователь не закрывает всплывающее меню, сделав выделение или отменив его.
CMFCMenuButton::m_hMenu
Дескриптор в подключенном меню.
HMENU m_hMenu;
Замечания
Платформа отображает меню, указанное этой переменной-членом, когда пользователь нажимает кнопку меню.
CMFCMenuButton::m_nMenuResult
Целое число, указывающее, какой элемент пользователь выбирает из всплывающего меню.
int m_nMenuResult;
Замечания
Значение этой переменной-члена равно нулю, если пользователь отменяет меню без выделения или ошибки.
CMFCMenuButton::m_bDefaultClick
Разрешает обработку текста или изображений по умолчанию на кнопке.
BOOL m_bDefaultClick;
Замечания
Если задать m_bDefaultClick значение false, кнопка отображает меню при нажатии кнопки в любом месте кнопки.
CMFCMenuButton::P reTranslateMessage
Вызывается платформой для перевода сообщений окна перед отправкой.
virtual BOOL PreTranslateMessage(MSG* pMsg);
Параметры
pMsg
[in] Указывает на структуру MSG , содержащую сообщение для обработки.
Возвращаемое значение
Ненулевое значение, если сообщение было переведено и не должно быть отправлено; 0, если сообщение не было переведено и должно быть отправлено.
Замечания
CMFCMenuButton::SizeToContent
Изменяет размер кнопки в соответствии с размером текста и размером изображения.
virtual CSize SizeToContent(BOOL bCalcOnly = FALSE);
Параметры
bCalcOnly
[in] Логический параметр, указывающий, изменяет ли этот метод размер кнопки.
Возвращаемое значение
Объект CSize, указывающий новый размер кнопки.
Замечания
Если вы вызываете эту функцию и bCalcOnly имеет значение TRUE, SizeToContent
вычислит только новый размер кнопки.
Новый размер кнопки вычисляется для соответствия тексту, изображению и стрелке кнопки. Платформа также добавляет предопределенные поля 10 пикселей для горизонтального края и 5 пикселей для вертикального края.