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]顯示按鈕的裝置內容。
矩形
[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]顯示按鈕的裝置內容。
矩形
[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 類別
逐步解說:將控制項放在工具列上
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應