CMFCDropDownToolbarButton 類別
按一下時其行為像一般按鈕的工具列按鈕類型。 不過,如果使用者按下並按住工具列按鈕,則會開啟下拉式工具列 ( CMFCDropDownToolBar 類別 )。
語法
class CMFCDropDownToolbarButton : public CMFCToolBarButton
成員
公用建構函式
名稱 | 描述 |
---|---|
CMFCDropDownToolbarButton::CMFCDropDownToolbarButton | 建構 CMFCDropDownToolbarButton 物件。 |
CMFCDropDownToolbarButton::~CMFCDropDownToolbarButton |
解構函式。 |
公用方法
資料成員
名稱 | 描述 |
---|---|
CMFCDropDownToolbarButton::m_uiShowBarDelay | 指定用戶必須在下拉式工具列出現之前按住滑鼠按鈕的時間長度。 |
備註
CMFCDropDownToolBarButton
與一般按鈕不同,因為它在按鈕右下角有一個小箭號。 當使用者從下拉式工具列選取按鈕之後,架構會在最上層工具列按鈕上顯示其圖示(右下角有小箭號的按鈕)。
如需如何實作下拉式工具列的詳細資訊,請參閱 CMFCDropDownToolBar 類別。
CMFCDropDownToolBarButton
物件可以匯出至 CMFCToolBarMenuButton Class 物件,並以快捷功能表顯示為功能表按鈕。
繼承階層架構
需求
標頭: 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));
CMFCDropDownToolbarButton::D ropDownToolbar
開啟下拉式工具列。
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 類別
逐步解說:將控制項放在工具列上