分享方式:


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 類別 ,而 CMFCButton 類別又衍生自 CButton 類別。 因此,您可以使用 CMFCMenuButton 程式代碼中的相同方式使用 CButton

當您建立 CMFCMenuButton時,您必須將句柄傳入相關聯的快捷功能表。 接下來,呼叫 函式 CMFCMenuButton::SizeToContentCMFCMenuButton::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;

繼承階層架構

CObject

CCmdTarget

CWnd

CButton

CMFCButton

CMFCMenuButton

需求

標頭: 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 圖元。

另請參閱

階層架構圖表
類別
CMFCButton 類別