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::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]布爾參數,指出這個方法是否調整按鈕的大小。
傳回值
備註
如果您呼叫此函式且 bCalcOnly 為 TRUE, SizeToContent
則只會計算按鈕的新大小。
會計算按鈕的新大小,以符合按鈕文字、影像和箭號。 架構也會在水準邊緣的預先定義邊界中新增 10 圖元,而垂直邊緣則為 5 圖元。