CMFCMenuButton-Klasse
Eine Schaltfläche, die ein Popupmenü anzeigt und die vom Benutzer gewählte Menüoption meldet.
Syntax
class CMFCMenuButton : public CMFCButton
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CMFCMenuButton::CMFCMenuButton | Erstellt ein CMFCMenuButton -Objekt. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CMFCMenuButton::P reTranslateMessage | Wird vom Framework aufgerufen, um Fensternachrichten zu übersetzen, bevor sie verteilt werden. (Überschreibt CMFCButton::PreTranslateMessage .) |
CMFCMenuButton::SizeToContent | Ändert die Größe der Schaltfläche entsprechend dem Text und der Bildgröße. |
Datenelemente
Name | Beschreibung |
---|---|
CMFCMenuButton::m_bOSMenu | Gibt an, ob das Standardmäßige Systempopupmenü oder CContextMenuManager::TrackPopupMenuMenu angezeigt werden soll. |
CMFCMenuButton::m_bRightArrow | Gibt an, ob das Popupmenü unter oder rechts neben der Schaltfläche angezeigt wird. |
CMFCMenuButton::m_bStayPressed | Gibt an, ob die Menüschaltfläche ihren Zustand ändert, nachdem der Benutzer die Schaltfläche loslässt. |
CMFCMenuButton::m_hMenu | Ein Handle für das angefügte Windows-Menü. |
CMFCMenuButton::m_nMenuResult | Ein Bezeichner, der angibt, welches Element der Benutzer im Popupmenü ausgewählt hat. |
CMFCMenuButton::m_bDefaultClick | Standardverarbeitung (auf Schaltflächentext/Bild) zulassen. |
Hinweise
Die CMFCMenuButton
Klasse wird von der CMFCButton-Klasse abgeleitet, die wiederum von der CButton-Klasse abgeleitet wird. Daher können Sie in Ihrem Code die gleiche Weise verwenden CMFCMenuButton
, wie Sie es verwenden CButton
würden.
Wenn Sie ein CMFCMenuButton
Objekt erstellen, müssen Sie ein Handle an das zugeordnete Popupmenü übergeben. Rufen Sie als Nächstes die Funktion CMFCMenuButton::SizeToContent
auf. CMFCMenuButton::SizeToContent
überprüft, ob die Schaltflächengröße ausreicht, um einen Pfeil einzuschließen, der auf die Position zeigt, an der das Popupfenster angezeigt wird – nämlich unter oder rechts neben der Schaltfläche.
Beispiel
Im folgenden Beispiel wird veranschaulicht, wie Sie den Ziehpunkt des menüs festlegen, das an die Schaltfläche angefügt ist, die Größe der Schaltfläche entsprechend ihrem Text und bildgröße ändern und das Popupmenü festlegen, das vom Framework angezeigt wird. Dieser Codeausschnitt ist Teil des Beispiels "Neue Steuerelemente".
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;
Vererbungshierarchie
Anforderungen
Kopfzeile: afxmenubutton.h
CMFCMenuButton::CMFCMenuButton
Erstellt ein neues CMFCMenuButton -Objekt.
CMFCMenuButton();
CMFCMenuButton::m_bOSMenu
Eine boolesche Membervariable, die angibt, welches Popupmenü das Framework anzeigt.
BOOL m_bOSMenu;
Hinweise
Ist m_bOSMenu
TRUE, ruft das Framework die geerbte TrackPopupMenu
Methode für dieses Objekt auf. Andernfalls ruft das Framework CContextMenuManager::TrackPopupMenuMenu auf.
CMFCMenuButton::m_bRightArrow
Eine boolesche Membervariable, die den Speicherort des Popupmenüs angibt.
BOOL m_bRightArrow;
Hinweise
Wenn der Benutzer die Menüschaltfläche drückt, wird in der Anwendung ein Popupmenü angezeigt. Das Framework zeigt das Popupmenü entweder unter der Schaltfläche oder rechts neben der Schaltfläche an. Die Schaltfläche weist auch einen kleinen Pfeil auf, der angibt, wo das Popupmenü angezeigt wird. Wenn m_bRightArrow
TRUE ist, zeigt das Framework das Popupmenü rechts neben der Schaltfläche an. Andernfalls wird das Popupmenü unter der Schaltfläche angezeigt.
CMFCMenuButton::m_bStayPressed
Eine boolesche Membervariable, die angibt, ob die Menüschaltfläche gedrückt wird, während der Benutzer im Popupmenü eine Auswahl trifft.
BOOL m_bStayPressed;
Hinweise
Wenn das m_bStayPressed
Element FALSCH ist, wird die Menüschaltfläche nicht gedrückt, wenn die Verwendung auf die Schaltfläche klickt. In diesem Fall zeigt das Framework nur das Popupmenü an.
Wenn das m_bStayPressed
Element WAHR ist, wird die Menüschaltfläche gedrückt, wenn der Benutzer auf die Schaltfläche klickt. Sie bleibt gedrückt, bis der Benutzer das Popupmenü geschlossen hat, entweder durch Auswahl oder Abbrechen.
CMFCMenuButton::m_hMenu
Der Ziehpunkt für das angefügte Menü.
HMENU m_hMenu;
Hinweise
Das Framework zeigt das von dieser Membervariable angegebene Menü an, wenn der Benutzer auf die Menüschaltfläche klickt.
CMFCMenuButton::m_nMenuResult
Eine ganze Zahl, die angibt, welches Element der Benutzer im Popupmenü auswählt.
int m_nMenuResult;
Hinweise
Der Wert dieser Membervariable ist null, wenn der Benutzer das Menü abbricht, ohne eine Auswahl vorzunehmen oder wenn ein Fehler auftritt.
CMFCMenuButton::m_bDefaultClick
Ermöglicht die Standardverarbeitung von Text oder Bildern auf der Schaltfläche.
BOOL m_bDefaultClick;
Hinweise
Wenn Sie m_bDefaultClick auf "false" festlegen, wird das Menü angezeigt, wenn Sie auf eine beliebige Stelle auf der Schaltfläche klicken.
CMFCMenuButton::P reTranslateMessage
Wird vom Framework aufgerufen, um Fensternachrichten zu übersetzen, bevor sie verteilt werden.
virtual BOOL PreTranslateMessage(MSG* pMsg);
Parameter
pMsg
[in] Verweist auf eine MSG-Struktur , die die zu verarbeitende Nachricht enthält.
Rückgabewert
Nonzero, wenn die Nachricht übersetzt wurde und nicht versendet werden sollte; 0, wenn die Nachricht nicht übersetzt wurde und verteilt werden soll.
Hinweise
CMFCMenuButton::SizeToContent
Ändert die Größe der Schaltfläche entsprechend ihrer Textgröße und Bildgröße.
virtual CSize SizeToContent(BOOL bCalcOnly = FALSE);
Parameter
bCalcOnly
[in] Ein boolescher Parameter, der angibt, ob diese Methode die Größe der Schaltfläche ändert.
Rückgabewert
Ein CSize-Objekt, das die neue Größe für die Schaltfläche angibt.
Hinweise
Wenn Sie diese Funktion aufrufen und "bCalcOnly " wahr ist, SizeToContent
wird nur die neue Größe der Schaltfläche berechnet.
Die neue Größe der Schaltfläche wird berechnet, um den Schaltflächentext, das Bild und den Pfeil anzupassen. Das Framework fügt außerdem vordefinierte Seitenränder von 10 Pixeln für die horizontale Kante und 5 Pixel für den vertikalen Rand hinzu.