共用方式為


CMFCToolBarButton 類別

提供工具列的按鈕功能。

語法

class CMFCToolBarButton : public CObject

成員

公用建構函式

名稱 描述
CMFCToolBarButton::CMFCToolBarButton 建構並初始化 CMFCToolBarButton 物件。
CMFCToolBarButton::~CMFCToolBarButton 解構函式。

公用方法

名稱 描述
CMFCToolBarButton::CanBeDropped 指定使用者是否可以在自訂期間將按鈕放在工具列或功能表上。
CMFCToolBarButton::CanBeStored 指定是否可以儲存按鈕。
CMFCToolBarButton::CanBeStretched 指定使用者是否可以在自訂期間延展按鈕。
CMFCToolBarButton::CompareWith 比較這個實例與提供的 CMFCToolBarButton 物件。
CMFCToolBarButton::CopyFrom 將另一個工具列按鈕的屬性複製到目前的按鈕。
CMFCToolBarButton::CreateFromOleData 從提供的 COleDataObject 物件建立 CMFCToolBarButton 物件。
CMFCToolBarButton::CreateObject 由建立此類別類型的動態執行個體架構所使用。
CMFCToolBarButton::EnableWindow 啟用或停用滑鼠和鍵盤輸入。
CMFCToolBarButton::ExportToMenuButton 將文字從工具列按鈕複製到功能表。
CMFCToolBarButton::GetClipboardFormat 擷取應用程式的全域剪貼簿格式。
CMFCToolBarButton::GetHwnd 擷取與工具列按鈕相關聯的視窗控制碼。
CMFCToolBarButton::GetImage 擷取按鈕的影像索引。
CMFCToolBarButton::GetInvalidateRect 擷取必須重新繪製之按鈕工作區的區域。
CMFCToolBarButton::GetParentWnd 擷取按鈕的父視窗。
CMFCToolBarButton::GetProtectedCommands 擷取使用者無法自訂的命令清單。
CMFCToolBarButton::GetTextSize 擷取按鈕文字的大小。
CMFCToolBarButton::HasFocus 判斷按鈕是否具有目前的輸入焦點。
CMFCToolBarButton::HaveHotBorder 決定當使用者選取按鈕時,是否顯示按鈕的框線。
CMFCToolBarButton::IsDrawImage 判斷影像是否顯示在按鈕上。
CMFCToolBarButton::IsDrawText 判斷是否要在按鈕上顯示文字標籤。
CMFCToolBarButton::IsDroppedDown 判斷按鈕是否顯示子功能表。
CMFCToolBarButton::IsEditable 判斷是否可以自訂按鈕。
CMFCToolBarButton::IsExtraSize 判斷按鈕是否可以以延伸框線顯示。
CMFCToolBarButton::IsFirstInGroup 判斷按鈕是否在其按鈕群組的第一個位置。
CMFCToolBarButton::IsHidden 判斷按鈕是否隱藏。
CMFCToolBarButton::IsHorizontal 判斷按鈕是否位於水準工具列上。
CMFCToolBarButton::IsLastInGroup 指定按鈕是否在其按鈕群組的最後一個位置。
CMFCToolBarButton::IsLocked 判斷按鈕是否位於鎖定的 [不可自訂] 工具列上。
CMFCToolBarButton::IsOwnerOf 判斷按鈕是否為所提供視窗控制碼的擁有者。
CMFCToolBarButton::IsVisible 判斷工具列按鈕是否可見。
CMFCToolBarButton::IsWindowVisible 判斷按鈕的基礎視窗控制碼是否可見。
CMFCToolBarButton::NotifyCommand 指定按鈕是否處理 WM_COMMAND 訊息。
CMFCToolBarButton::OnAddToCustomizePage 當按鈕新增至 [ 自訂 ] 對話方塊時,由架構呼叫。
CMFCToolBarButton::OnBeforeDrag 指定是否可以拖曳按鈕。
CMFCToolBarButton::OnBeforeDrop 指定使用者是否可以將按鈕卸載至目標工具列。
CMFCToolBarButton::OnCalculateSize 由架構呼叫,以計算指定裝置內容和停駐狀態的按鈕大小。
CMFCToolBarButton::OnCancelMode 由架構呼叫以處理 WM_CANCELMODE 訊息。
CMFCToolBarButton::OnChangeParentWnd 當按鈕插入新的工具列時,由架構呼叫。
CMFCToolBarButton::OnClick 當使用者按一下滑鼠按鍵時,由架構呼叫。
CMFCToolBarButton::OnClickUp 當使用者放開滑鼠按鍵時,由架構呼叫。
CMFCToolBarButton::OnCoNtextHelp 當父工具列處理WM_HELPHITTEST訊息時,由架構呼叫。
CMFCToolBarButton::OnCtlColor 當父工具列處理WM_CTLCOLOR訊息時,由架構呼叫。
CMFCToolBarButton::OnCustomizeMenu 當應用程式在父工具列上顯示快捷方式功能表時,允許按鈕修改提供的功能表。
CMFCToolBarButton::OnDblClk 當父工具列處理 WM_LBUTTONDBLCLK 訊息時,由架構呼叫。
CMFCToolBarButton::OnDraw 由架構呼叫,以使用指定的樣式和選項繪製按鈕。
CMFCToolBarButton::OnDrawOnCustomizeList 由架構呼叫,以在 [自訂 ] 對話方塊的 [命令 ] 窗格中繪製按鈕。
CMFCToolBarButton::OnGetCustomToolTipText 由架構呼叫以擷取按鈕的自訂工具提示文字。
CMFCToolBarButton::OnGlobalFontsChanged 當全域字型變更時,由架構呼叫。
CMFCToolBarButton::OnMove 當父工具列移動時,由架構呼叫。
CMFCToolBarButton::OnShow 當按鈕變成可見或看不見時,由架構呼叫。
CMFCToolBarButton::OnSize 當父工具列變更其大小或位置,而且此變更需要按鈕變更大小時,由架構呼叫。
CMFCToolBarButton::OnToolHitTest 當父工具列必須判斷某個點是否位於按鈕的周框中時,由架構呼叫。
CMFCToolBarButton::OnUpdateToolTip 當父工具列更新其工具提示文字時,由架構呼叫。
CMFCToolBarButton::P repareDrag 當按鈕即將執行拖放作業時,由架構呼叫。
CMFCToolBarButton::Rect 擷取按鈕的周框。
CMFCToolBarButton::ResetImageToDefault 將 設定為與按鈕相關聯的影像預設值。
CMFCToolBarButton::SaveBarState 儲存工具列按鈕的狀態。
CMFCToolBarButton::Serialize 從封存讀取此物件,或將它寫入封存。 (覆寫 CObject::Serialize。)
CMFCToolBarButton::SetACCData 使用工具列按鈕中的協助工具資料填入提供的 CAccessibilityData 物件。
CMFCToolBarButton::SetClipboardFormatName 重新命名全域剪貼簿格式。
CMFCToolBarButton::SetImage 設定按鈕的影像索引。
CMFCToolBarButton::SetProtectedCommands 設定使用者無法自訂的命令清單。
CMFCToolBarButton::SetRadio 當按鈕變更其核取狀態時,由架構呼叫。
CMFCToolBarButton::SetRect 設定按鈕的周框。
CMFCToolBarButton::SetStyle 設定按鈕的樣式。
CMFCToolBarButton::SetVisible 指定按鈕是否可見。
CMFCToolBarButton::Show 顯示或隱藏按鈕。

資料成員

名稱 描述
CMFCToolBarButton::m_bImage 指定是否在按鈕上顯示影像。
CMFCToolBarButton::m_bText 指定是否要在按鈕上顯示文字標籤。
CMFCToolBarButton::m_bTextBelow 指定文字標籤是否顯示在按鈕上的影像底下。
CMFCToolBarButton::m_bUserButton 指定按鈕是否具有使用者定義的影像。
CMFCToolBarButton::m_b神秘leText 指定按鈕是否顯示其全文檢索標籤,即使它不符合周框。
CMFCToolBarButton::m_bWrap 指定分隔符號旁的按鈕是否會放在下一個資料列上。
CMFCToolBarButton::m_bWrapText 指定是否啟用多行文字標籤。
CMFCToolBarButton::m_nID 按鈕的命令識別碼。
CMFCToolBarButton::m_nStyle 按鈕的樣式。
CMFCToolBarButton::m_strText 按鈕的文字標籤。

備註

CMFCToolbarButton物件是位於工具列上的控制項。 其行為類似于一般按鈕的行為。 您可以將影像和文字標籤指派給這個物件。 工具列按鈕也可以有命令識別碼。 當使用者按一下工具列按鈕時,架構會執行此識別碼指定的命令。

一般而言,可以自訂工具列按鈕:使用者可以將按鈕從某個工具列拖曳到另一個工具列,以及複製、貼上、刪除和編輯文字標籤和影像。 若要防止使用者自訂工具列,您可以用兩種方式之一鎖定工具列。 當您呼叫 CMFCToolBar::LoadToolBar 時, bLocked 請將旗標設定為 TRUE,或使用 CMFCToolBarButton ::SetProtectedCommands 方法,將個別按鈕的命令識別碼新增至受保護命令 的全域清單。

CMFCToolBarButton 物件會顯示應用程式中工具列影像全域集合中的影像。 這些集合是由父工具列 CMFCToolBar 類別 所維護。 如需詳細資訊,請參閱 CMFCToolBarImages 類別

當使用者按一下工具列按鈕時,其父工具列會處理滑鼠訊息,並將適當的動作傳達給按鈕。 如果按鈕具有有效的命令識別碼,父工具列會將WM_COMMAND訊息傳送至父框架。

類別 CMFCToolBarButton 是其他工具列按鈕類別的基類,例如 CMFCToolBarMenuButton 類別 CMFCToolBarEditBoxButton 類別和 CMFCToolBarComboBoxButton 類別

範例

下列範例示範如何使用 類別中的 CMFCToolBarButton 各種方法設定 CMFCToolBarButton 物件。 此範例說明如何啟用滑鼠和鍵盤輸入、設定按鈕的影像索引、設定按鈕的周框,以及讓按鈕可見。 此程式碼片段是 Tab 控制項範例 一部分。

CMFCToolBarButton *pOffice2007 = NULL;
int nIndex = -1;

for (UINT uiCmd = ID_VIEW_APPLOOK_2007_1; uiCmd <= ID_VIEW_APPLOOK_2007_4; uiCmd++)
{
   // CMFCToolBar m_wndToolBarTheme
   nIndex = m_wndToolBarTheme.CommandToIndex(uiCmd);

   CMFCToolBarButton *pButton = m_wndToolBarTheme.GetButton(nIndex);

   if (pButton != NULL)
   {
      pOffice2007 = pButton;
      break;
   }
}
pOffice2007->EnableWindow();
pOffice2007->SetImage(1);
pOffice2007->SetRect(CRect(1, 1, 1, 1));
pOffice2007->SetVisible();
pOffice2007->Show(true);

繼承階層架構

CObject

CMFCToolBarButton

需求

標頭: afxtoolbarbutton.h

CMFCToolBarButton::CanBeDropped

指定使用者是否可以在自訂期間將按鈕放在工具列或功能表上。

virtual BOOL CanBeDropped(CMFCToolBar* pToolbar);

參數

pToolbar
[in]閒置。

傳回值

這個方法會傳回 TRUE。

備註

根據預設,工具列按鈕可以在每個可自訂的工具列上卸載,也就是非鎖定的工具列。

這個方法的預設實作會傳回 TRUE。 如果您想要防止使用者重新置放按鈕,請覆寫此方法並傳回 FALSE。

CMFCToolBarButton::CanBeStored

判斷是否可以儲存按鈕。

virtual BOOL CanBeStored() const;

傳回值

這個方法會傳回 TRUE。

備註

架構會使用此方法來判斷按鈕是否可以參與拖放作業。

預設實作會傳回 TRUE。 如果您的按鈕無法儲存為拖放作業的一部分,請覆寫此方法。 如需拖放作業的詳細資訊,請參閱 OLE 拖放

CMFCToolBarButton::CanBeStretched

指定使用者是否可以在自訂期間延展按鈕。

virtual BOOL CanBeStretched() const;

傳回值

這個方法會傳回 FALSE。

備註

架構會使用此方法來判斷按鈕是否可以在自訂模式中延展。

這個方法的預設實作會傳回 FALSE。 覆寫此方法以傳回變數寬度控制項的 TRUE,例如下拉式方塊或滑杆。

如需自訂模式的詳細資訊,請參閱 CMFCToolBar::SetCustomizeMode

CMFCToolBarButton::CMFCToolBarButton

建構並初始化 CMFCToolBarButton 物件。

CMFCToolBarButton(
    UINT uiID,
    int iImage,
    LPCTSTR lpszText=NULL,
    BOOL bUserButton=FALSE,
    BOOL bLocked=FALSE);

參數

uiID
[in]按鈕的命令識別碼。

iImage
[in]影像集合中按鈕的影像索引。

lpszText
[in]按鈕的文字標籤。 可以是 Null。

bUserButton
[in]布林值,決定按鈕是否為使用者定義。 如果此參數為 TRUE,則按鈕是使用者定義的。 否則,按鈕影像會從資源載入。

封鎖
[in]布林值,決定是否可以自訂按鈕。 如果此參數為 TRUE,則無法自訂按鈕。 否則,可以自訂按鈕。

CMFCToolBarButton::CompareWith

比較這個實例與提供的 CMFCToolBarButton 物件。

virtual BOOL CompareWith(const CMFCToolBarButton& other) const;

參數

other
[in]要與這個實例比較的物件參考。

傳回值

如果提供的 物件等於這個實例的值,則為非零;否則為 0。

備註

預設實作會判斷所提供物件的命令識別碼是否等於這個實例的命令識別碼。 如果您必須執行其他處理,以判斷兩個 CMFCToolBarButton 物件是否相等,請覆寫這個方法。

CMFCToolBarButton::CopyFrom

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

virtual void CopyFrom(const CMFCToolBarButton& src);

參數

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

備註

呼叫這個方法,將另一個工具列按鈕複製到這個工具列按鈕。

CMFCToolBarButton::CreateFromOleData

從提供的 COleDataObject 物件建立 CMFCToolBarButton 物件。

static CMFCToolBarButton* __stdcall CreateFromOleData(COleDataObject* pDataObject);

參數

pDataObject
[in]來源 OLE 資料物件。

傳回值

建立的 CMFCToolBarButton 物件。

備註

架構會使用此方法,以各種格式執行資料傳輸。 例如, CMFCOutlookBarPane::OnDragOver 方法會使用這個方法來執行拖放作業。

CMFCToolBarButton::EnableWindow

啟用或停用滑鼠和鍵盤輸入。

virtual void EnableWindow(BOOL bEnable = TRUE);

參數

bEnable
[in]將此參數設定為 TRUE 以啟用輸入,或設定為 FALSE 以停用輸入。

備註

這個方法會呼叫 函 EnableWindow 式來啟用或停用輸入。 如需詳細資訊,請參閱 Windows SDK 中的 EnableWindow

CMFCToolBarButton::ExportToMenuButton

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

virtual BOOL ExportToMenuButton(CMFCToolBarMenuButton& menuButton) const;

參數

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

傳回值

這個方法會傳回 TRUE。

備註

架構會呼叫此方法,將文字從工具列按鈕複製到功能表按鈕。 預設實作會複製按鈕的文字標籤。 如果文字標籤是空的,這個方法會複製按鈕的工具提示文字。

這個方法的預設實作會傳回 TRUE。 如果您想要在架構將衍生自 CMFCToolbarButton 的物件轉換成功能表按鈕時,請覆寫此方法。

CMFCToolBarButton::GetClipboardFormat

擷取應用程式的全域剪貼簿格式。

static CLIPFORMAT __stdcall GetClipboardFormat();

傳回值

應用程式的全域 CLIPFORMAT 值。

備註

架構會呼叫此方法,以擷取 OLE 資料傳輸作業的剪貼簿格式。 例如, CMFCToolBarButton::CreateFromOleData 方法會使用此方法從來源 OLE 資料物件複製資料。

此方法會在第一次呼叫此方法時設定全域 CLIPFORMAT 值。 這個方法的所有後續呼叫都會傳回這個值。

若要允許在應用程式之間執行拖放作業,請呼叫 CMFCToolBarButton::SetClipboardFormatName 方法。

如需 MFC 中剪貼簿的詳細資訊,請參閱 剪貼簿

CMFCToolBarButton::GetHwnd

擷取與工具列按鈕相關聯的視窗控制碼。

virtual HWND GetHwnd();

傳回值

如果工具列按鈕沒有相關聯的視窗控制碼,則為與工具列按鈕相關聯的視窗控制碼或 Null。

備註

這個方法的預設實作會傳回 Null。 覆寫此方法以傳回特定控制項的視窗控制碼。

CMFCToolBarButton::GetImage

擷取按鈕的影像索引。

int GetImage() const;

傳回值

與此按鈕相關聯的影像索引。

備註

如果按鈕具有使用者定義的影像(也就是 bUserButton 在建構函式中為 TRUE),則傳回的索引會在使用者定義的影像集合中指定影像(請參閱 CMFCToolBar::GetUserImages )。 否則,索引會指定從資源檔載入之影像集合中的影像(請參閱 CMFCToolBar::GetImages )。 如需資源檔的詳細資訊,請參閱 使用資源檔

CMFCToolBarButton::GetInvalidateRect

擷取必須重新繪製之按鈕工作區的區域。

virtual const CRect GetInvalidateRect() const;

傳回值

CRect物件,指定必須重新繪製的區域。

備註

這個方法的預設實作會傳回整個工作區。 如果您想要重新繪製不同的區域,請覆寫此方法。

CMFCToolBarButton::GetParentWnd

擷取按鈕的父視窗。

CWnd* GetParentWnd() const;

傳回值

按鈕的父視窗。

CMFCToolBarButton::GetProtectedCommands

擷取使用者無法自訂的命令清單。

static const CList<UINT,UINT>& GetProtectedCommands();

傳回值

受保護的命令清單。

備註

在自訂模式中,架構會停用受保護的工具列按鈕命令。 使用者無法在停用的工具列按鈕上執行拖放和編輯作業。

使用 CMFCToolBarButton::SetProtectedCommands 方法來定義受保護的命令清單。

CMFCToolBarButton::GetTextSize

擷取按鈕文字的大小。

SIZE GetTextSize() const;

傳回值

SIZE 物件,包含按鈕文字的大小,以圖元為單位。

CMFCToolBarButton::HasFocus

判斷按鈕是否具有目前的輸入焦點。

virtual BOOL HasFocus() const;

傳回值

如果按鈕具有輸入焦點,則為非零;否則為 0。

備註

如果按鈕具有輸入焦點,或為具有輸入焦點之視窗的子視窗或子視窗,則這個方法的預設實作會傳回非零值。 您可以覆寫此函式來自訂此行為。

CMFCToolBarButton::HaveHotBorder

決定當使用者選取按鈕時,是否顯示按鈕的框線。

virtual BOOL HaveHotBorder() const;

傳回值

這個方法會傳回 TRUE。

備註

架構會呼叫此方法,以判斷當使用者選取工具列按鈕時,是否應該顯示其框線。

預設實作會傳回 TRUE。 您可以覆寫此方法來自訂此行為。

CMFCToolBarButton::IsDrawImage

判斷影像是否顯示在按鈕上。

BOOL IsDrawImage() const;

傳回值

如果按鈕上顯示影像,則為非零;否則為 0。

備註

如果工具列按鈕沒有相關聯的影像,則這個方法會傳回 FALSE ( CMFCToolBarButton::GetImage 傳回 -1),或者 如果 CMFCToolBarButton::m_bImage 設定為 FALSE。

CMFCToolBarButton::IsDrawText

判斷是否要在按鈕上顯示文字標籤。

BOOL IsDrawText() const;

傳回值

如果顯示文字標籤,則為非零;否則為 0。

備註

如果工具列按鈕沒有相關聯的文字標籤( CMFCToolBarButton::m_strText 空白),或 CMFCToolBarButton::m_bText 設為 FALSE,這個方法會傳回 FALSE。

CMFCToolBarButton::IsDroppedDown

判斷按鈕是否顯示子功能表。

virtual BOOL IsDroppedDown() const;

傳回值

這個方法會傳回 FALSE。

備註

這個方法的預設實作會傳回 FALSE。 如果您的控制項顯示子功能表,請覆寫此方法以傳回 TRUE。

CMFCToolBarButton::IsEditable

判斷是否可以自訂按鈕。

virtual BOOL IsEditable() const;

傳回值

如果使用者可以自訂按鈕,則為非零;否則為 0。

備註

架構會呼叫此方法,以判斷使用者是否可以使用拖放或編輯作業來自訂工具列按鈕。

如果按鈕的命令識別碼是標準命令,則預設實作會傳回 FALSE(您可以呼叫 IsStandardCommand 函式來判斷這個值),或者命令識別碼是否位於受保護的命令清單中。 如需受保護命令的詳細資訊,請參閱 CMFCToolBarButton::GetProtectedCommands CMFCToolBarButton::SetProtectedCommands

覆寫此方法以自訂其行為。

CMFCToolBarButton::IsExtraSize

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

virtual BOOL IsExtraSize() const;

傳回值

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

備註

數個面板會針對工具列按鈕的框線使用額外的大小(例如圓形按鈕)。

如果使用者將此按鈕從某個工具列移至另一個工具列,架構會呼叫 CMFCToolBarButton::OnChangeParentWnd 方法。 CMFCToolBarButton::OnChangeParentWnd 方法會將額外大小旗標設定為新父工具列的旗標(如需詳細資訊,請參閱 CMFCToolBar::IsButtonExtraSizeAvailable )。

CMFCToolBarButton::IsFirstInGroup

判斷按鈕是否在其按鈕群組的第一個位置。

virtual BOOL IsFirstInGroup() const;

傳回值

如果按鈕是其按鈕群組中的第一個按鈕,則為 TRUE;否則為 FALSE。

備註

這個方法會將 按鈕群組定義為位於相同資料列的鄰近按鈕集 ,並以分隔符號或工具列的框線系結。 如果工具列按鈕參考 [自訂 ] 按鈕,這個方法會傳回 FALSE。 如需自訂按鈕的詳細資訊 ,請參閱 CMFCToolBar::GetCustomizeButton

呼叫 CMFCToolBarButton::IsLastInGroup 方法,以判斷按鈕是否在其按鈕群組的最後一個位置。

CMFCToolBarButton::IsHidden

判斷按鈕是否隱藏。

BOOL IsHidden() const;

傳回值

如果按鈕是隱藏的,則為非零值(不可見):否則為 0。

備註

架構會在延展父工具列時呼叫這個方法,以判斷工具列按鈕是否可見。

如果您使用 CMFCToolBarButton::SetVisible 方法將按鈕設定為不可見 ,請使用 CMFCToolBarButton::IsVisible 來判斷工具列按鈕是否可見。

根據預設,所有工具列按鈕都會顯示。 使用 CMFCToolBarButton::Show 方法來隱藏或顯示工具列按鈕。

CMFCToolBarButton::IsHorizontal

判斷按鈕是否位於水準工具列上。

BOOL IsHorizontal() const;

傳回值

如果工具列按鈕位於水準工具列上,則為非零;否則為 0。

備註

架構會呼叫此方法來判斷工具列按鈕的配置。

這個方法會傳 m_bHorz 回資料成員。 資料成員的 m_bHorz 預設值為 TRUE;它會在每個呼叫 CMFCToolBarButton::OnDraw 方法時重設。

CMFCToolBarButton::IsLastInGroup

指定按鈕是否在其按鈕群組的最後一個位置。

virtual BOOL IsLastInGroup() const;

傳回值

如果按鈕是其按鈕群組中的最後一個按鈕,則為 TRUE;否則為 FALSE。

備註

這個方法會將 按鈕群組 定義為位於相同資料列且以分隔符號或工具列框線系結的鄰近按鈕集。如果工具列按鈕沒有父工具列或工具列按鈕參照 [ 自訂 ] 按鈕,此方法會傳回 FALSE。 如需自訂按鈕的詳細資訊 ,請參閱 CMFCToolBar::GetCustomizeButton

呼叫 CMFCToolBarButton::IsFirstInGroup 方法,以判斷按鈕是否在其按鈕群組的第一個位置。

CMFCToolBarButton::IsLocked

判斷按鈕是否位於鎖定的 [不可自訂] 工具列上。

BOOL IsLocked() const;

傳回值

如果按鈕位於鎖定的工具列上,則為非零;否則為 0。

備註

架構會呼叫此方法,以判斷使用者是否可以使用拖放或編輯作業來自訂工具列按鈕。 使用 CMFCToolBar::LoadToolBar 方法,在父工具列上設定鎖定的屬性。 架構會將此屬性的值傳遞給插入父工具列的每個工具列按鈕建構函式 ( CMFCToolbarButton ) 的建構函式。

CMFCToolBarButton::IsOwnerOf

判斷按鈕是否為所提供視窗控制碼的擁有者。

virtual BOOL IsOwnerOf(HWND hwnd);

參數

hwnd
[in]視窗控制碼。

傳回值

如果按鈕是所提供視窗控制碼的擁有者,則為非零;否則為 0。

備註

如果 hwnd 參考直接視窗控制碼,或是與按鈕相關聯的視窗控制碼子系,這個方法會傳回非零值。 如果 hwnd 為 Null,這個方法會傳回 0。

CMFCToolBarButton::IsVisible

判斷工具列按鈕是否可見。

BOOL IsVisible() const;

傳回值

如果顯示工具列按鈕,則為非零;否則為 0。

備註

您可以使用 CMFCToolBarButton::SetVisible 方法來顯示或隱藏工具列按鈕 呼叫 CMFCToolBarButton::SetVisible 之後 ,呼叫父工具列上的 CPane::AdjustSizeImmediate 方法,以重新計算父工具列的配置。

CMFCToolBarButton::IsWindowVisible

判斷按鈕的基礎視窗控制碼是否可見。

virtual BOOL IsWindowVisible();

傳回值

如果按鈕的基礎視窗控制碼可見,則為非零;否則為 0。

備註

如果基礎視窗控制碼的 styles 屬性包含WS_VISIBLE樣式,這個方法會傳回非零。 如果按鈕的基礎視窗控制碼為 Null,這個方法會傳回 FALSE。

CMFCToolBarButton::m_bImage

指定是否在按鈕上顯示影像。

BOOL m_bImage;

備註

如果此資料成員設定為 TRUE,架構會顯示與工具列按鈕相關聯的影像;否則架構不會顯示影像。 此成員會影響 CMFCToolBarButton::m_bImage 方法的 傳回值。

CMFCToolBarButton::m_bText

指定是否要在按鈕上顯示文字標籤。

BOOL m_bText;

備註

如果此資料成員設定為 TRUE,架構會顯示工具列按鈕的文字標籤;否則架構不會顯示文字標籤。 此成員會影響 CMFCToolBarButton::m_bText 方法的 傳回值。

CMFCToolBarButton::m_bTextBelow

指定文字標籤是否顯示在按鈕上的影像底下。

BOOL m_bTextBelow;

備註

如果這個成員變數設定為 TRUE,則架構會顯示影像下方按鈕的文字。 這個成員的預設值為 FALSE。

CMFCToolBarButton::m_bUserButton

指定按鈕是否具有使用者定義的影像

BOOL m_bUserButton;

備註

當按鈕具有與其相關聯的使用者定義影像時,此資料成員會設定為 TRUE。

CMFCToolBarButton::m_b神秘leText

指定按鈕是否顯示其全文檢索標籤,即使它不符合周框。

BOOL m_bWholeText;

備註

如果此資料成員設定為 TRUE,則架構會藉由放大按鈕來顯示全文檢索標籤。 否則,架構會截斷並將省略號 ( ... ) 附加至文字標籤。

CMFCToolBarButton::m_bWrap

指定分隔符號旁的按鈕是否會放在下一個資料列上。

BOOL m_bWrap;

備註

當工具列按鈕不符合目前資料列或指定版面配置時,架構會將這個資料成員設定為 TRUE(例如,每個資料列的特定工具列按鈕數目)。

如果此資料成員設定為 TRUE,且工具列會水準停駐或浮動,則架構會將此按鈕放在下一個資料列上。

此資料成員的預設值為 FALSE。

CMFCToolBarButton::m_bWrapText

指定是否啟用多行文字標籤。

AFX_IMPORT_DATA static BOOL m_bWrapText;

備註

如果這個靜態成員變數為 TRUE,架構可讓所有工具列在工具列按鈕上顯示多行文字標籤。

此資料成員的預設值為 FALSE。

CMFCToolBarButton::m_nID

按鈕的命令識別碼。

UINT m_nID;

備註

-1 的命令識別碼表示按鈕是分隔符號。 所有按鈕分隔符號都有TBBS_SEPARATOR樣式。 如需按鈕樣式的詳細資訊,請參閱 CMFCToolBarButton::m_nStyle

CMFCToolBarButton::m_nStyle

按鈕的樣式。

UINT m_nStyle;

備註

如需可用的工具列按鈕樣式清單,請參閱 ToolBar 控制項 樣式。

CMFCToolBarButton::m_strText

按鈕的文字標籤。

CString m_strText;

備註

此資料成員包含按鈕的文字標籤。 文字標籤可以是空的。

CMFCToolBarButton::NotifyCommand

指定按鈕是否處理 WM_COMMAND 訊息。

virtual BOOL NotifyCommand(int iNotifyCode);

參數

iNotifyCode
[in]與命令相關聯的通知訊息。

傳回值

這個方法會傳回 FALSE。

備註

當架構即將將WM_COMMAND 訊息傳送 至父視窗時,架構會呼叫這個方法。

根據預設,此方法會傳回 FALSE。 如果您想要處理WM_COMMAND訊息或 FALSE,表示父工具列應該處理訊息,請覆寫此方法以傳回 TRUE。

CMFCToolBarButton::OnAddToCustomizePage

當按鈕新增至 [ 自訂 ] 對話方塊時,由架構呼叫。

virtual void OnAddToCustomizePage();

備註

此方法的預設實作不會執行任何動作。 如果您想要在按鈕新增至 [自訂 ] 對話方塊時執行一些動作,請覆寫此方法。

CMFCToolBarButton::OnBeforeDrag

指定是否可以拖曳按鈕。

virtual BOOL OnBeforeDrag() const;

傳回值

如果可以拖曳按鈕,則為 TRUE;否則為 FALSE。

備註

架構會在使用者開始拖曳按鈕之前呼叫此方法。

這個方法的預設實作會傳回 TRUE。 覆寫此方法以傳回 FALSE 以停用按鈕拖曳。

CMFCToolBarButton::OnBeforeDrop

指定使用者是否可以將按鈕卸載至目標工具列。

virtual BOOL OnBeforeDrop(CMFCToolBar* pTarget);

參數

pTarget
[in]拖放作業的目標。

傳回值

TRUE 是表示 如果按鈕可以卸載至提供的目標工具列;否則為 FALSE。

備註

架構會在將按鈕卸載至工具列之前呼叫這個方法。

這個方法的預設實作會傳回 TRUE。 覆寫此方法以傳回 FALSE,以停用指定目標上的卸載作業。

CMFCToolBarButton::OnCalculateSize

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

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

參數

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

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

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

傳回值

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

備註

架構會呼叫此方法,以判斷指定裝置內容和停駐狀態的工具列按鈕大小。

預設實作會考慮文字和影像大小(如果顯示它們)、文字和影像位置(下方或位於影像右側的文字),以及工具列停駐狀態。

如果您想要提供非標準按鈕的大小,請覆寫此方法(例如編輯方塊按鈕)。

CMFCToolBarButton::OnCancelMode

由架構呼叫以處理 WM_CANCELMODE 訊息。

virtual void OnCancelMode();

備註

此方法的預設實作不會執行任何動作。 如果您想要處理WM_CANCELMODE 訊息, 請覆寫此方法。

CMFCToolBarButton::OnChangeParentWnd

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

virtual void OnChangeParentWnd(CWnd* pWndParent);

參數

pWndParent
[in]新的父視窗。

備註

例如,當使用者將按鈕從一個工具列拖曳到另一個工具列時,按鈕就會插入工具列中。

此方法的預設實作不會執行任何動作。

CMFCToolBarButton::OnClick

當使用者按一下滑鼠按鍵時,由架構呼叫。

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

參數

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

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

傳回值

這個方法會傳回 FALSE。

備註

當使用者按一下工具列按鈕時,架構會呼叫此方法。

預設實作不會執行任何動作,並傳回 FALSE。 如果按鈕處理按一下訊息,請覆寫此方法以傳回非零值。

CMFCToolBarButton::OnClickUp

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

virtual BOOL OnClickUp();

傳回值

這個方法會傳回 FALSE。

備註

當使用者放開工具列按鈕時,架構會呼叫此方法。

預設實作不會執行任何動作,並傳回 FALSE。 如果按鈕處理按一下訊息,請覆寫此方法以傳回非零值。

CMFCToolBarButton::OnCoNtextHelp

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

virtual BOOL OnContextHelp(CWnd* pWnd);

參數

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

傳回值

這個方法會傳回 FALSE。

備註

此方法的預設實作不會執行任何動作,並傳回 FALSE。 如果按鈕處理說明訊息,請覆寫此方法以傳回非零值。

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

CMFCToolBarButton::OnCtlColor

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

virtual HBRUSH OnCtlColor(
    CDC* pDC,
    UINT nCtlColor);

參數

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

nCtlColor
[in]特定色彩通知。

傳回值

架構用來繪製按鈕背景之筆刷物件的控制碼。

備註

當父工具列處理包含 Windows 控制項的工具列按鈕的WM_CTLCOLOR訊息時,架構會呼叫此方法。 如果工具列按鈕是無視窗的,架構就不會呼叫這個方法。

當工具列架構處於自訂模式且工具列按鈕解除鎖定時,架構會呼叫此方法。 如需自訂模式的詳細資訊,請參閱 CMFCToolBar::SetCustomizeMode 。 如需鎖定工具列按鈕的詳細資訊,請參閱 CMFCToolBarButton::IsLocked

預設實作不會執行任何動作,並傳回 Null。

CMFCToolBarButton::OnCustomizeMenu

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

virtual BOOL OnCustomizeMenu(CMenu* pMenu);

參數

pMenu
[in]要自訂的功能表。

傳回值

這個方法會傳回 FALSE。

備註

預設實作不會執行任何動作,並傳回 FALSE。 如果您想要修改所提供功能表的內容,請覆寫此方法並傳回非零值。

CMFCToolBarButton::OnDblClk

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

virtual void OnDblClk(CWnd* pWnd);

參數

pWnd
[in] - 按鈕的父視窗。

備註

當父工具列處理 WM_LBUTTONDBLCLK 訊息時,方法會呼叫 CMFCToolBar::OnLButtonDblClk 這個方法。

此方法的預設實作不會執行任何動作。

CMFCToolBarButton::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。

備註

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

CMFCToolBarButton::OnDrawOnCustomizeList

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

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

參數

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

矩形
[in]按鈕的周框。

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

傳回值

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

備註

當按鈕即將在擁有者繪製清單方塊中顯示時,自訂對話方塊( 命令索引 標籤)會呼叫這個方法。

如果按鈕有可用,這個方法的預設實作會顯示按鈕的影像和文字標籤。 如果按鈕的文字標籤無法使用,方法會顯示工具提示文字。

覆寫此方法以執行自訂繪圖。

CMFCToolBarButton::OnGetCustomToolTipText

由架構呼叫以擷取按鈕的自訂工具提示文字。

virtual BOOL OnGetCustomToolTipText(CString& strToolTip);

參數

strToolTip
[out] CString 物件,接收自訂工具提示文字。

傳回值

這個方法會傳回 FALSE。

備註

架構會在顯示工具列按鈕的工具提示時呼叫此方法。 如果此方法傳回 FALSE,架構會使用預設工具提示。

預設實作不會執行任何動作,並傳回 FALSE。 覆寫此方法並傳回非零值,以提供工具列按鈕的自訂工具提示文字。

CMFCToolBarButton::OnGlobalFontsChanged

當全域字型變更時,由架構呼叫。

virtual void OnGlobalFontsChanged();

備註

此方法的預設實作不會執行任何動作。 覆寫此方法以更新用來顯示按鈕文字的字型。

CMFCToolBarButton::OnMove

當父工具列移動時,由架構呼叫。

virtual void OnMove();

備註

此方法的預設實作不會執行任何動作。 覆寫此方法,以在父工具列移動時重新置放按鈕。

CMFCToolBarButton::OnShow

當按鈕變成可見或看不見時,由架構呼叫。

virtual void OnShow(BOOL bShow);

參數

bShow
[in]指定按鈕是否可見。 如果此參數為 TRUE,則會顯示按鈕。 否則,不會顯示按鈕。

備註

此方法的預設實作不會執行任何動作。 覆寫此方法以更新按鈕的可見度。

CMFCToolBarButton::OnSize

當父工具列變更其大小或位置,且此變更會導致按鈕變更大小時,由架構呼叫。

virtual void OnSize(int iSize);

參數

iSize
[in]按鈕的新寬度。

備註

此方法的預設實作不會執行任何動作。 覆寫此方法,以在父工具列的大小或位置變更時調整按鈕的大小。

CMFCToolBarButton::OnToolHitTest

當父工具列必須判斷某個點是否位於按鈕的周框中時,由架構呼叫。

virtual BOOL OnToolHitTest(
    const CWnd* pWnd,
    TOOLINFO* pTI);

參數

pWnd
[in]按鈕的父視窗。 可以是 Null。

Pti
[in] TOOLINFO 結構,包含工具提示控制項中工具的相關資訊。

傳回值

如果按鈕可以擷取父框架視窗的指標,則為 的結果 OnMenuButtonToolHitTest ,否則為 FALSE。

備註

如果此方法可以將父視窗轉換成有效的框架物件,此方法會呼叫下列其中一個方法:

CMFCToolBarButton::OnUpdateToolTip

當父工具列更新其工具提示文字時,由架構呼叫。

virtual BOOL OnUpdateToolTip(
    CWnd* pWndParent,
    int iButtonIndex,
    CToolTipCtrl& wndToolTip,
    CString& str);

參數

pWndParent
[in]父視窗。

iButtonIndex
[in]父按鈕集合中按鈕之以零起始的索引。

wndToolTip
[in]顯示工具提示文字的控制項。

str
[out] CString 物件,接收更新的工具提示文字。

傳回值

這個方法會傳回 FALSE。

備註

此方法的預設實作不會執行任何動作,並傳回 FALSE。 如果您提供工具提示文字字串,請覆寫此方法以傳回非零值。

CMFCToolBarButton::P repareDrag

當按鈕即將執行拖放作業時,由架構呼叫。

virtual BOOL PrepareDrag(COleDataSource& srcItem);

參數

srcItem
[in] COleDataSource 物件,儲存拖放作業的狀態資訊。

傳回值

如果作業成功,則為 TRUE;否則為 FALSE。

備註

架構會呼叫此方法來準備工具列按鈕,以將其狀態儲存在提供的 COleDataSource 物件中。 此方法會將本身序列化為共用檔案,然後將該檔案傳遞至 COleDataSource::CacheGlobalData 方法,以儲存其狀態。 如需工具列按鈕序列化的詳細資訊,請參閱 CMFCToolBarButton::Serialize

如果無法儲存按鈕,這個方法不會執行任何動作,並傳回 TRUE( CMFCToolBarButton::CanBeStored 方法會傳回 FALSE)。 如果在物件序列化期間發生例外狀況,則會傳回 FALSE。

如需 OLE 拖放作業的詳細資訊,請參閱 OLE 拖放

CMFCToolBarButton::Rect

擷取按鈕的周框。

const CRect& Rect() const;

傳回值

CRect物件,包含按鈕的周框。

CMFCToolBarButton::ResetImageToDefault

將 設定為與按鈕相關聯的影像預設值。

virtual void ResetImageToDefault();

備註

這個方法會使用 CMFCToolBar::GetDefaultImage 方法,從其父工具列擷取 預設影像。 如果按鈕沒有相關聯的預設影像,這個方法會使用 CStringT::LoadString 方法,根據按鈕的字串資源來設定按鈕的文字標籤。 如需字串資源的詳細資訊,請參閱 使用資源檔

如果按鈕具有使用者定義的影像,則這個方法不會執行任何動作。

CMFCToolBarButton::SaveBarState

儲存工具列按鈕的狀態。

virtual void SaveBarState();

備註

架構會在建立 CMFCToolBarButton 物件時呼叫此方法,做為拖放作業的結果。

此方法的預設實作不會執行任何動作。 覆寫此方法,將工具列按鈕的狀態儲存至外部資料源。

CMFCToolBarButton::Serialize

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

virtual void Serialize(CArchive& ar);

參數

Ar
[in]要 CArchive 序列化的 物件。

備註

此方法支援剪貼簿或拖放作業等資料傳輸程式。 它會讀取或寫入按鈕的屬性,例如識別碼、文字標籤和影像識別碼,或從或寫入提供的 CArchive 物件。

如需序列化範例,請參閱 序列化:序列化物件

CMFCToolBarButton::SetACCData

使用工具列按鈕中的協助工具資料填入提供的 CAccessibilityData 物件。

virtual BOOL SetACCData(
    CWnd* pParent,
    CAccessibilityData& data);

參數

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

data
[in] CAccessibilityData 物件,填入工具列按鈕的協助工具資料。

傳回值

這個方法會傳回 TRUE。

備註

如果您的工具列按鈕未提供協助工具資料,請覆寫此方法以傳回 FALSE。

CMFCToolBarButton::SetClipboardFormatName

重新命名全域剪貼簿格式。

static void __stdcall SetClipboardFormatName(LPCTSTR lpszName);

參數

lpszName
[in]全域剪貼簿格式的新名稱。 不可以是 NULL。

備註

此方法可讓您在多個應用程式之間執行拖放作業。 每個應用程式都必須提供相同的剪貼簿格式名稱。

您必須先呼叫此方法,架構才能呼叫 CMFCToolBarButton::GetClipboardFormat

CMFCToolBarButton::SetImage

設定按鈕的影像索引。

virtual void SetImage(int iImage);

參數

iImage
[in]工具列影像集合中影像的索引。

備註

如果工具列按鈕是分隔符號, iImage 會參考分隔符號按鈕的新寬度。

如果 iImage 小於零,這個方法會停用影像的繪圖,並啟用按鈕文字標籤的繪製。

CMFCToolBarButton::SetProtectedCommands

設定使用者無法自訂的命令清單。

static void SetProtectedCommands(const CList<UINT,UINT>& lstCmds);

參數

lstCmds
[in]受保護的命令清單。

備註

在自訂模式中,架構會停用受保護的工具列按鈕命令。 使用者無法在停用的工具列按鈕上執行拖放和編輯作業。

使用 CMFCToolBarButton::GetProtectedCommands 方法來擷取受保護的命令清單。

CMFCToolBarButton::SetRadio

當按鈕變更其核取狀態時,由架構呼叫。

virtual void SetRadio();

備註

此方法的預設實作不會執行任何動作。 覆寫此方法,以在按鈕變更其核取狀態時執行自訂動作。

CMFCToolBarButton::SetRect

設定按鈕的周框。

void SetRect(const CRect rect);

參數

矩形
[in]按鈕的新周框。

備註

這個方法會在 設定新的周框之後,呼叫 CMFCToolBarButton::OnMove 方法。

CMFCToolBarButton::SetStyle

設定按鈕的樣式。

virtual void SetStyle(UINT nStyle);

參數

nStyle
[in]按鈕的新樣式。

備註

預設實作會將 CMFCToolBarButton::m_nStyle 資料成員設定為 nStyle 。 如果您想要執行其他處理來處理樣式中的變更,請覆寫此方法。 如需有效樣式旗標的清單,請參閱 ToolBar 控制項樣式

CMFCToolBarButton::SetVisible

指定按鈕是否可見。

void SetVisible(BOOL bShow=TRUE);

參數

bShow
[in]布林值,指定要顯示或隱藏按鈕。 如果此參數為 TRUE,則會顯示按鈕。 如果參數為 FALSE,則會隱藏按鈕。

備註

使用此函式來隱藏或顯示特定的工具列按鈕。 呼叫此方法之後, 呼叫 CPane::AdjustSizeImmediate 方法。

CMFCToolBarButton::Show

顯示或隱藏按鈕。

void Show(BOOL bShow);

參數

bShow
[in]布林值,指定要顯示或隱藏按鈕。 如果此參數為 TRUE,則會顯示按鈕。 如果參數為 FALSE,則會隱藏按鈕。

備註

架構會呼叫此方法,以在調整其父工具列大小時更新工具列按鈕的可見度。 當按鈕不再符合工具列界限時,架構會呼叫此方法, 並將 bShow 設定為 FALSE。 架構會在調整按鈕大小後再次符合工具列界限時,使用 bShow 設定為 TRUE 來呼叫這個方法

使用 CMFCToolBarButton::SetVisible 方法可設定按鈕的一般可見度。

此方法會在 更新按鈕的可見度狀態之後,呼叫 CMFCToolBarButton::OnShow 方法。

另請參閱

階層架構圖表
類別
CMFCToolBar 類別
CMFCToolBarImages 類別