CMFCToolBarButton 類別
提供工具列的按鈕功能。
語法
class CMFCToolBarButton : public CObject
成員
公用建構函式
名稱 | 描述 |
---|---|
CMFCToolBarButton::CMFCToolBarButton | 建構並初始化 CMFCToolBarButton 物件。 |
CMFCToolBarButton::~CMFCToolBarButton |
解構函式。 |
公用方法
資料成員
名稱 | 描述 |
---|---|
CMFCToolBarButton::m_bImage | 指定是否在按鈕上顯示影像。 |
CMFCToolBarButton::m_bText | 指定是否要在按鈕上顯示文字標籤。 |
CMFCToolBarButton::m_bTextBelow | 指定文字標籤是否顯示在按鈕上的影像底下。 |
CMFCToolBarButton::m_bUserButton | 指定按鈕是否具有使用者定義的影像。 |
CMFCToolBarButton::m_bWholeText | 指定按鈕是否顯示其全文檢索標籤,即使它不符合周框。 |
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訊息傳送至父框架。
類別是其他工具列按鈕類別的基類,例如 CMFCToolBarMenuButton 類別、CMFCToolBarEditBoxButton 類別和 CMFCToolBarComboBoxButton 類別。 CMFCToolBarButton
範例
下列範例示範如何使用 類別中的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);
繼承階層架構
需求
標頭: 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_bWholeText
指定按鈕是否顯示其全文檢索標籤,即使它不符合周框。
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]顯示按鈕的裝置內容。
rect
[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]顯示按鈕的裝置內容。
rect
[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 會參考分隔符按鈕的新寬度。
如果 image 小於零,這個方法會停用影像的繪圖,並啟用按鈕文字標籤的繪製。
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);
參數
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 方法。