共用方式為


CMFCDropDownToolbarButton 類別

按一下時其行為像一般按鈕的工具列按鈕類型。 不過,如果使用者按下並按住工具列按鈕,則會開啟下拉式工具列 ( CMFCDropDownToolBar 類別 )。

語法

class CMFCDropDownToolbarButton : public CMFCToolBarButton

成員

公用建構函式

名稱 描述
CMFCDropDownToolbarButton::CMFCDropDownToolbarButton 建構 CMFCDropDownToolbarButton 物件。
CMFCDropDownToolbarButton::~CMFCDropDownToolbarButton 解構函式。

公用方法

名稱 描述
CMFCDropDownToolbarButton::CopyFrom 將另一個工具列按鈕的屬性複製到目前的按鈕。 (覆寫 CMFCToolBarButton::CopyFrom.)
CMFCDropDownToolbarButton::CreateObject 由建立此類別類型的動態執行個體架構所使用。
CMFCDropDownToolbarButton::D ropDownToolbar 開啟下拉式工具列。
CMFCDropDownToolbarButton::ExportToMenuButton 將文字從工具列按鈕複製到功能表。 (覆寫 CMFCToolBarButton::ExportToMenuButton.)
CMFCDropDownToolbarButton::GetDropDownToolBar 擷取與按鈕相關聯的下拉式工具列。
CMFCDropDownToolbarButton::GetThisClass 由架構用來取得與這個類別類型相關聯之 CRuntimeClass 物件的指標。
CMFCDropDownToolbarButton::IsDropDown 判斷下拉式工具列目前是否開啟。
CMFCDropDownToolbarButton::IsExtraSize 判斷按鈕是否可以以延伸框線顯示。 (覆寫 CMFCToolBarButton::IsExtraSize.)
CMFCDropDownToolbarButton::OnCalculateSize 由架構呼叫,以計算指定裝置內容和停駐狀態的按鈕大小。 (覆寫 CMFCToolBarButton::OnCalculateSize.)
CMFCDropDownToolbarButton::OnCancelMode 由架構呼叫以處理 WM_CANCELMODE 訊息。 (覆寫 CMCToolBarButton::OnCancelMode。)
CMFCDropDownToolbarButton::OnChangeParentWnd 當按鈕插入新的工具列時,由架構呼叫。 (覆寫 CMFCToolBarButton::OnChangeParentWnd.)
CMFCDropDownToolbarButton::OnClick 當使用者按鍵時,由架構呼叫。 (覆寫 CMFCToolBarButton::OnClick.)
CMFCDropDownToolbarButton::OnClickUp 當使用者放開滑鼠按鈕時,由架構呼叫。 (覆寫 CMFCToolBarButton::OnClickUp.)
CMFCDropDownToolbarButton::OnContextHelp 當父工具列處理WM_HELPHITTEST訊息時,由架構呼叫。 (覆寫 CMFCToolBarButton::OnContextHelp.)
CMFCDropDownToolbarButton::OnCustomizeMenu 當應用程式在父工具列上顯示快捷方式功能表時,修改提供的功能表。 (覆寫 CMFCToolBarButton::OnCustomizeMenu.)
CMFCDropDownToolbarButton::OnDraw 由架構呼叫,以使用指定的樣式和選項繪製按鈕。 (覆寫 CMFCToolBarButton::OnDraw.)
CMFCDropDownToolbarButton::OnDrawOnCustomizeList 由架構呼叫,以在 [自定義] 對話框的 [命令] 窗格中繪製按鈕。 (覆寫 CMFCToolBarButton::OnDrawOnCustomizeList.)
CMFCDropDownToolbarButton::Serialize 從封存讀取此物件,或將它寫入封存。 (覆寫 CMFCToolBarButton::Serialize.)
CMFCDropDownToolbarButton::SetDefaultCommand 設定當使用者按鍵時,架構所使用的預設命令。

資料成員

名稱 描述
CMFCDropDownToolbarButton::m_uiShowBarDelay 指定用戶必須在下拉式工具列出現之前按住滑鼠按鈕的時間長度。

備註

CMFCDropDownToolBarButton與一般按鈕不同,因為它在按鈕右下角有一個小箭號。 當使用者從下拉式工具列選取按鈕之後,架構會在最上層工具列按鈕上顯示其圖示(右下角有小箭號的按鈕)。

如需如何實作下拉式工具列的詳細資訊,請參閱 CMFCDropDownToolBar 類別

CMFCDropDownToolBarButton物件可以匯出至 CMFCToolBarMenuButton Class 物件,並以快捷功能表顯示為功能表按鈕。

繼承階層架構

CObject

CMFCToolBarButton

CMFCDropDownToolbarButton

需求

標頭: afxdropdowntoolbar.h

CMFCDropDownToolbarButton::CopyFrom

將另一個工具列按鈕的屬性複製到目前的按鈕。

virtual void CopyFrom(const CMFCToolBarButton& src);

參數

src
[in]要複製的來源按鈕參考。

備註

呼叫這個方法,將另一個工具列按鈕複製到這個工具列按鈕。 src 的類型必須為 CMFCDropDownToolbarButton

CMFCDropDownToolbarButton::CMFCDropDownToolbarButton

建構 CMFCDropDownToolbarButton 物件。

CMFCDropDownToolbarButton();

CMFCDropDownToolbarButton(
    LPCTSTR lpszName,
    CMFCDropDownToolBar* pToolBar);

參數

lpszName
[in]按鈕的預設文字。

pToolBar
[in]當使用者按下按鈕時所顯示的 物件指標 CMFCDropDownToolBar

備註

建構函式的第二個多載會從 pToolBar 指定的工具列複製到下拉式按鈕。

一般而言,下拉式工具列按鈕會使用 pToolBar 所指定工具列中最近使用的按鈕文字。 當按鈕轉換成功能表按鈕或顯示在 [自定義] 對話方塊的 [命令] 索引標籤中時,它會使用 lpszName指定的文字。 如需自定義對話框的詳細資訊,請參閱 CMFCToolBarsCustomizeDialog 類別

範例

下列範例示範如何建構 類別的物件 CMFCDropDownToolbarButton 。 此代碼段是Visual Studio示範範例一部分。

// Add dropdown resources button
// CMFCToolBarsCustomizeDialog* pDlgCust
// CMFCDropDownToolBar m_wndToolbarResource
pDlgCust->AddButton(_T("Build"), CMFCDropDownToolbarButton(_T("Add Resource"), &m_wndToolbarResource));

開啟下拉式工具列。

BOOL DropDownToolbar(CWnd* pWnd);

參數

pWnd
[in]下拉式框架的父視窗,或 NULL 以使用下拉式工具列按鈕的父視窗。

傳回值

如果方法成功,則為非零;否則為 0。

備註

CMFCDropDownToolbarButton::OnClick 方法會呼叫此方法,以在使用者按下並按住工具列按鈕時開啟下拉式工具列。

這個方法會使用 CMFCDropDownFrame::Create 方法來建立下拉式工具列。 如果父工具列垂直停駐,這個方法會根據大小調整,將下拉式工具欄放置在父工具列的左側或右側。 否則,此方法會將下拉式工具列放置在父工具列下方。

如果 pWnd 為 NULL,且下拉式工具列按鈕沒有父視窗,這個方法就會失敗。

CMFCDropDownToolbarButton::ExportToMenuButton

將文字從工具列按鈕複製到功能表。

virtual BOOL ExportToMenuButton(CMFCToolBarMenuButton& menuButton) const;

參數

menuButton
[in]目標功能表按鈕的參考。

傳回值

如果方法成功,則為非零,否則為零。

備註

這個方法會呼叫基類實作 ( CMFCToolBarButton::ExportToMenuButton),然後將附加至目標功能表按鈕,其中包含此按鈕中的每個工具欄功能表項。 這個方法不會將子功能表附加至快捷功能表。

如果父工具列、 m_pToolBar為 NULL 或基類實作傳回 FALSE,這個方法就會失敗。

CMFCDropDownToolbarButton::GetDropDownToolBar

擷取與按鈕相關聯的下拉式工具列。

CMFCToolBar* GetDropDownToolBar() const;

傳回值

與按鈕相關聯的下拉式工具列。

備註

這個方法會傳 m_pToolBar 回數據成員。

CMFCDropDownToolbarButton::IsDropDown

判斷下拉式工具列目前是否開啟。

BOOL IsDropDown() const;

傳回值

如果目前開啟下拉式工具列,則為非零;否則為 0。

備註

架構會使用 CMFCDropDownToolbarButton::D ropDownToolbar 方法開啟下拉式工具列。 當使用者按下下拉式工具列非工作區中的滑鼠左鍵時,架構會關閉下拉式工具列。

CMFCDropDownToolbarButton::IsExtraSize

判斷按鈕是否可以以延伸框線顯示。

virtual BOOL IsExtraSize() const;

傳回值

如果工具列按鈕可以使用延伸框線顯示,則為非零;否則為 0。

備註

如需延伸框線的詳細資訊,請參閱 CMFCToolBarButton::IsExtraSize

CMFCDropDownToolbarButton::m_uiShowBarDelay

指定用戶必須在下拉式工具列出現之前按住滑鼠按鈕的時間長度。

static UINT m_uiShowBarDelay;

備註

延遲時間是以毫秒為單位來測量。 預設值為 500。 您可以變更這個共享資料成員的值來設定另一個延遲。

CMFCDropDownToolbarButton::OnCalculateSize

由架構呼叫,以計算指定裝置內容和停駐狀態的按鈕大小。

virtual SIZE OnCalculateSize(
    CDC* pDC,
    const CSize& sizeDefault,
    BOOL bHorz);

參數

pDC
[in]顯示按鈕的裝置內容。

sizeDefault
[in]按鈕的預設大小。

bHorz
[in]父工具列的停駐狀態。 如果工具列水準停駐或浮動,則此參數為 TRUE,如果工具列垂直停駐,則為 FALSE。

傳回值

SIZE結構,包含按鈕的維度,以像素為單位。

備註

這個方法會將下拉箭號的寬度新增至按鈕大小的水平維度,以擴充基類實作 ( CMFCToolBarButton::OnCalculateSize)。

CMFCDropDownToolbarButton::OnChangeParentWnd

當按鈕插入新的工具列時,由架構呼叫。

virtual void OnChangeParentWnd(CWnd* pWndParent);

參數

pWndParent
[in]新的父視窗。

備註

這個方法會清除文字捲標 (CMFCToolBarButton::m_strText),並將 CMFCToolBarButton::m_bText 和 CMFCToolBarButton::m_bUserButton數據成員設定為 FALSE,以覆寫基類實作(CMFCToolBarButton::OnChangeParentWnd)。

CMFCDropDownToolbarButton::OnClick

當使用者按鍵時,由架構呼叫。

virtual BOOL OnClick(
    CWnd* pWnd,
    BOOL bDelay = TRUE);

參數

pWnd
[in]工具列按鈕的父視窗。

bDelay
[in]如果訊息應該以延遲處理,則為TRUE。

傳回值

如果按鈕處理單擊訊息,則為非零;否則為 0。

備註

這個方法會藉由更新下拉式工具欄的狀態, 擴充基類實作 CMFCToolBarButton::OnClick

當使用者按兩下工具列按鈕時,此方法會建立定時器,等候 CMFCDropDownToolbarButton::m_uiShowBarDelay 資料成員所指定的時間長度,然後使用 CMFCDropDownToolbarButton::D ropDownToolbar 方法開啟下拉式工具列。 此方法會在使用者第二次按下工具列按鈕時關閉下拉式工具列。

CMFCDropDownToolbarButton::OnClickUp

當使用者放開滑鼠按鈕時,由架構呼叫。

virtual BOOL OnClickUp();

傳回值

如果按鈕處理單擊訊息,則為非零;否則為 0。

備註

這個方法會藉由更新下拉式工具欄的狀態, 擴充基類實作 CMFCToolBarButton::OnClickUp

如果下拉式工具列定時器為作用中,這個方法會停止它。 如果已開啟,則會關閉下拉式工具列。

如需下拉式工具列和下拉式工具列定時器的詳細資訊,請參閱 CMFCDropDownToolbarButton::OnClick

CMFCDropDownToolbarButton::OnContextHelp

當父工具列處理WM_HELPHITTEST訊息時,由架構呼叫。

virtual BOOL OnContextHelp(CWnd* pWnd);

參數

pWnd
[in]工具列按鈕的父視窗。

傳回值

如果按鈕處理說明訊息,則為非零;否則為 0。

備註

這個方法會呼叫 CMFCDropDownToolbarButton::OnClick 方法,並將 bDelay 設定為 FALSE,藉此擴充基類實作(CMFCToolBarButton::OnContextHelp)。 這個方法會傳回 CMFCDropDownToolbarButton::OnClick傳回的值。

如需WM_HELPHITTEST訊息的詳細資訊,請參閱 TN028:內容相關說明支援

CMFCDropDownToolbarButton::OnCustomizeMenu

當應用程式在父工具列上顯示快捷方式功能表時,修改提供的功能表。

virtual BOOL OnCustomizeMenu(CMenu* pMenu);

參數

pMenu
[in]要自定義的功能表。

傳回值

這個方法會傳回 TRUE。

備註

這個方法會停用下列功能表項,以擴充基類實作 ( CMFCToolBarButton::OnCustomizeMenu):

  • 複製按鈕影像

  • 按鈕外觀

  • 映像

  • Text

  • 影像和文字

覆寫此方法以修改架構以自定義模式顯示的快捷方式功能表。

CMFCDropDownToolbarButton::OnDraw

由架構呼叫,以使用指定的樣式和選項繪製按鈕。

virtual void OnDraw(
    CDC* pDC,
    const CRect& rect,
    CMFCToolBarImages* pImages,
    BOOL bHorz = TRUE,
    BOOL bCustomizeMode = FALSE,
    BOOL bHighlight = FALSE,
    BOOL bDrawBorder = TRUE,
    BOOL bGrayDisabledButtons = TRUE);

參數

pDC
[in]顯示按鈕的裝置內容。

rect
[in]按鈕的周框。

pImages
[in]與按鈕相關聯的工具列影像集合。

bHorz
[in]父工具列的停駐狀態。 當按鈕水準停駐時,此參數為 TRUE,而當按鈕垂直停駐時為 FALSE。

bCustomizeMode
[in]指定工具列是否處於自定義模式。 當工具列處於自定義模式時,此參數為TRUE,當工具列不在自定義模式時為 FALSE。

bHighlight
[in]指定按鈕是否反白顯示。 當按鈕反白顯示時,此參數為 TRUE,當按鈕未反白顯示時為 FALSE。

bDrawBorder
[in]指定按鈕是否應該顯示其框線。 當按鈕應該顯示其框線時,此參數為 TRUE,而當按鈕不應該顯示其框線時,則為 FALSE。

bGrayDisabledButtons
[in]指定是否要遮蔽停用的按鈕或使用停用的影像集合。 當停用的按鈕應該著色時,此參數為 TRUE,而當此方法應該使用停用的影像集合時,則為 FALSE。

備註

覆寫此方法以自訂工具列按鈕繪圖。

CMFCDropDownToolbarButton::OnDrawOnCustomizeList

由架構呼叫,以在 [自定義] 對話框的 [命令] 窗格中繪製按鈕。

virtual int OnDrawOnCustomizeList(
    CDC* pDC,
    const CRect& rect,
    BOOL bSelected);

參數

pDC
[in]顯示按鈕的裝置內容。

rect
[in]按鈕的周框。

bSelected
[in]是否已選取按鈕。 如果此參數為TRUE,則會選取按鈕。 如果此參數為 FALSE,則不會選取按鈕。

傳回值

指定裝置內容上按鈕的寬度,以像素為單位。

備註

需要按鈕才能在擁有者繪製清單框上顯示本身時,自定義對話框( 命令索引 標籤)呼叫這個方法。

這個方法會將按鈕的文字標籤變更為按鈕的名稱,即您傳遞至建構函式的 lpszName 參數值,以擴充基類實作(CMFCToolBarButton::OnDrawOnCustomizeList)。

CMFCDropDownToolbarButton::Serialize

從封存讀取此物件,或將它寫入封存。

virtual void Serialize(CArchive& ar);

參數

ar
[in]要 CArchive 串行化的物件。

備註

這個方法會藉由串行化父工具列的資源標識符,擴充基類實作 ( CMFCToolBarButton::Serialize)。 當封存載入時( CArchive::IsLoading 傳回非零值),這個方法會將 m_pToolBar 數據成員設定為包含串行化資源標識碼的工具列。

CMFCDropDownToolbarButton::SetDefaultCommand

設定當使用者按鍵時,架構所使用的預設命令。

void SetDefaultCommand(UINT uiCmd);

參數

uiCmd
[in]默認命令的識別碼。

備註

呼叫這個方法,以指定當使用者按下按鈕時,架構所執行的預設命令。 具有 uiCmd指定命令標識碼的項目必須位於父下拉式工具列中。

另請參閱

階層架構圖表
類別
CMFCDropDownToolBar 類別
CMFCToolBar 類別
CMFCToolBarMenuButton 類別
逐步解說:將控制項放在工具列上