CMFCCaptionBar 類別
CMFCCaptionBar
物件是可顯示三個元素的控制列:按鈕、文字標籤和點陣圖。 它一次只能每個類型各顯示一個項目。 您可以將每個項目對齊控制項的左緣或右緣,或對齊中央。 您也可以將平面或 3D 樣式套用至標題列的上框線和下框線。
語法
class CMFCCaptionBar : public CPane
成員
公用方法
受保護的方法
名稱 | 描述 |
---|---|
CMFCCaptionBar::OnDrawBackground | 由架構呼叫以填滿標題列的背景。 |
CMFCCaptionBar::OnDrawBorder | 由架構呼叫以繪製標題列的框線。 |
CMFCCaptionBar::OnDrawButton | 由架構呼叫以繪製標題列按鈕。 |
CMFCCaptionBar::OnDrawImage | 由架構呼叫以繪製標題列影像。 |
CMFCCaptionBar::OnDrawText | 由架構呼叫以繪製標題列文字。 |
資料成員
名稱 | 描述 |
---|---|
CMFCCaptionBar::m_clrBarBackground | 標題列的背景色彩。 |
CMFCCaptionBar::m_clrBarBorder | 標題列框線的色彩。 |
CMFCCaptionBar::m_clrBarText | 標題列文字的色彩。 |
備註
若要建立標題列,請遵循下列步驟:
建構
CMFCCaptionBar
物件。 一般而言,您會將標題列新增至框架視窗類別。呼叫 CMFCCaptionBar::Create 方法來建立標題列控制項,並將它附加至
CMFCCaptionBar
物件。呼叫 CMFCCaptionBar::SetButton 、 CMFCCaptionBar::SetText 、 CMFCCaptionBar::SetIcon 和 CMFCCaptionBar::SetBitmap 來設定標題列元素。
當您設定 button 元素時,必須將命令識別碼指派給按鈕。 當使用者按一下按鈕時,標題列會將具有此識別碼的WM_COMMAND訊息路由傳送至父框架視窗。
標題列也可以在消息列模式中運作,以模擬 Microsoft Office 2007 應用程式中出現的消息列。 在消息列模式中,標題列會顯示點陣圖、訊息和按鈕(通常會開啟對話方塊)。您可以將工具提示指派給點陣圖。
若要啟用消息列模式,請呼叫 CMFCCaptionBar::Create 並將第四個參數 (bIsMessageBarMode) 設定為 TRUE。
範例
下例示範如何在 CMFCCaptionBar
類別中使用各種方法。 此範例示範如何建立標題列控制項、設定標題列的 3D 框線、設定標題列元素邊緣與標題列控制項邊緣之間的距離、設定標題列的按鈕、設定按鈕的工具提示、設定標題列的文字標籤、設定標題的點陣圖影像列,並設定標題列中影像的工具提示。 此程式碼片段是 MS Office 2007 示範範例 的 一部分。
CMFCCaptionBar m_wndMessageBar;
BOOL CMainFrame::CreateMessageBar()
{
// The this pointer points to a CMainFrame class which extends the CFrameWndEx class.
if (!m_wndMessageBar.Create(WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS, this, ID_VIEW_MESSAGEBAR, -1, TRUE))
{
TRACE0("Failed to create caption bar\n");
return FALSE;
}
m_wndMessageBar.SetFlatBorder(FALSE);
m_wndMessageBar.SetMargin(10);
m_wndMessageBar.SetButton(_T("Options..."), ID_TOOLS_OPTIONS, CMFCCaptionBar::ALIGN_LEFT, FALSE);
m_wndMessageBar.SetButtonToolTip(_T("Click here to see more options"));
m_wndMessageBar.SetText(_T("Welcome to the MFC MSOffice2007 demonstration!"), CMFCCaptionBar::ALIGN_LEFT);
m_wndMessageBar.SetBitmap(IDB_INFO, RGB(255, 255, 255), FALSE, CMFCCaptionBar::ALIGN_LEFT);
m_wndMessageBar.SetImageToolTip(_T("Important"), _T("Please take a look at MSOffice2007Demo source code to learn how to create advanced user interface in minutes."));
return TRUE;
}
繼承階層架構
需求
標頭: afx標題bar.h
CMFCCaptionBar::Create
建立標題列控制項,並將它附加至 CMFCCaptionBar
物件。
BOOL Create(
DWORD dwStyle,
CWnd* pParentWnd,
UINT uID,
int nHeight=-1,
BOOL bIsMessageBarMode=FALSE);
參數
dwStyle
標題列樣式的邏輯 OR 組合。
pParentWnd
標題列控制項的父視窗。
Uid
標題列控制項的識別碼。
nHeight
標題列控制項的高度,以圖元為單位。 如果是 -1,則會根據圖示的高度、文字和標題列控制項顯示的按鈕來計算高度。
bIsMessageBarMode
如果標題列處於消息列模式,則為 TRUE;否則為 FALSE。
傳回值
如果成功建立標題列控制項,則為 TRUE;否則為 FALSE。
備註
您會在兩個步驟中建構 CMFCCaptionBar
物件。 首先,您會呼叫 建構函式,然後呼叫 Create
方法,該方法會建立 Windows 控制項並將它附加至 CMFCCaptionBar
物件。
CMFCCaptionBar::D oesAllowDynInsertBefore
指出是否可以動態插入標題列與其父框架之間的另一個窗格。
virtual BOOL DoesAllowDynInsertBefore() const;
傳回值
除非覆寫,否則會傳回 FALSE。
備註
CMFCCaptionBar::EnableButton
啟用或停用標題列上的按鈕。
void EnableButton(BOOL bEnable=TRUE);
參數
bEnable
[in]TRUE 表示啟用按鈕,FALSE 表示停用按鈕。
CMFCCaptionBar::GetAlignment
傳回指定專案的對齊方式。
BarElementAlignment GetAlignment(BarElement elem);
參數
elem
[in]要為其擷取對齊的標題列專案。
傳回值
專案的對齊方式,例如按鈕、點陣圖、文字或圖示。
備註
專案的對齊方式可以是下列其中一個值:
ALIGN_INVALID
ALIGN_LEFT
ALIGN_RIGHT
ALIGN_CENTER
CMFCCaptionBar::GetBorderSize
傳回標題列的框線大小。
int GetBorderSize() const;
傳回值
框線的大小,以圖元為單位。
CMFCCaptionBar::GetButtonRect
擷取標題列上按鈕的周框。
CRect GetButtonRect() const;
傳回值
CRect
物件,包含標題列上按鈕周框的座標。
CMFCCaptionBar::GetMargin
傳回標題列元素邊緣與標題列控制項邊緣之間的距離。
int GetMargin() const;
傳回值
標題列元素邊緣與標題列控制項邊緣之間的距離,以圖元為單位。
CMFCCaptionBar::IsMessageBarMode
指定標題列是否處於消息列模式。
BOOL IsMessageBarMode() const;
傳回值
如果標題列處於消息列模式,則為 TRUE;否則為 FALSE。
備註
在消息列模式中,標題列會顯示具有工具提示、郵件內文和按鈕的影像。
CMFCCaptionBar::m_clrBarBackground
標題列的背景色彩。
COLORREF m_clrBarBackground
CMFCCaptionBar::m_clrBarBorder
標題列框線的色彩。
COLORREF m_clrBarBorder
CMFCCaptionBar::m_clrBarText
標題列文字的色彩。
COLORREF m_clrBarText
CMFCCaptionBar::OnDrawBackground
由架構呼叫以填滿標題列的背景。
virtual void OnDrawBackground(
CDC* pDC,
CRect rect);
參數
pDC
[in]標題列之裝置內容的指標。
矩形
[in]要填滿的周框。
備註
當 OnDrawBackground
標題列的背景即將填滿時,會呼叫 方法。 預設實作會使用 CMFCCaptionBar::m_clrBarBackground 色彩填滿背景。
覆寫衍生類別中的 CMFCCaptionBar
這個方法,以自訂標題列的外觀。
CMFCCaptionBar::OnDrawBorder
由架構呼叫以繪製標題列的框線。
virtual void OnDrawBorder(
CDC* pDC,
CRect rect);
參數
pDC
[in]用來顯示框線的裝置內容。
矩形
[in]周框。
備註
根據預設,框線具有平面樣式。
覆寫衍生類別中的 CMFCCaptionBar
這個方法,以自訂標題列框線的外觀。
CMFCCaptionBar::OnDrawButton
由架構呼叫以繪製標題列按鈕。
virtual void OnDrawButton(
CDC* pDC,
CRect rect,
const CString& strButton,
BOOL bEnabled);
參數
pDC
[in]用來顯示按鈕之裝置內容的指標。
矩形
[in]按鈕的周框。
strButton
[in]按鈕的文字標籤。
bEnabled
[in]如果啟用按鈕,則為 TRUE;否則為 FALSE。
備註
覆寫衍生類別中的 CMFCCaptionBar
這個方法,以自訂標題列按鈕的外觀。
CMFCCaptionBar::OnDrawImage
由架構呼叫以繪製標題列影像。
virtual void OnDrawImage(
CDC* pDC,
CRect rect);
參數
pDC
[in]用來顯示影像之裝置內容的指標。
矩形
[in]指定影像的周框。
備註
覆寫衍生類別中的 CMFCCaptionBar
這個方法,以自訂影像外觀。
CMFCCaptionBar::OnDrawText
由架構呼叫以繪製標題列文字。
virtual void OnDrawText(
CDC* pDC,
CRect rect,
const CString& strText);
參數
pDC
[in]用來顯示按鈕之裝置內容的指標。
矩形
[in]文字的周框。
strText
[in]要顯示的文字字串。
備註
預設實作會使用 CDC::DrawText
和 CMFCCaptionBar::m_clrBarText 色彩來顯示文字。
覆寫衍生類別中的 CMFCCaptionBar
這個方法,以自訂標題列文字的外觀。
CMFCCaptionBar::RemoveBitmap
從標題列移除點陣圖影像。
void RemoveBitmap();
CMFCCaptionBar::RemoveButton
從標題列移除按鈕。
void RemoveButton();
備註
會自動調整標題列專案的版面配置。
CMFCCaptionBar::RemoveIcon
從標題列移除圖示。
void RemoveIcon();
CMFCCaptionBar::RemoveText
從標題列移除文字標籤。
void RemoveText();
CMFCCaptionBar::SetBitmap
設定標題列的點陣圖影像。
void SetBitmap(
HBITMAP hBitmap,
COLORREF clrTransparent,
BOOL bStretch=FALSE,
BarElementAlignment bmpAlignment=ALIGN_RIGHT);
void SetBitmap(
UINT uiBmpResID,
COLORREF clrTransparent,
BOOL bStretch=FALSE,
BarElementAlignment bmpAlignment=ALIGN_RIGHT);
參數
hBitmap
[in]要設定之點陣圖的控制碼。
clrTransparent
[in]指定點陣圖透明色彩的 RGB 值。
bStretch
[in]如果為 TRUE,則如果點陣圖不符合影像周框的矩形,則會延展。 否則不會延展點陣圖。
bmpAlignment
[in]點陣圖的對齊方式。
備註
使用這個方法,在標題列上設定點陣圖。
先前的點陣圖會自動終結。 如果標題列顯示圖示,因為您呼叫 CMFCCaptionBar::SetIcon 方法,除非您呼叫 CMFCCaptionBar::RemoveIcon 移除圖示,否則不會顯示點陣圖。
點陣圖會對齊 bmpAlignment 參數所 指定。 這個參數可以是下列其中一個 BarElementAlignment
值:
ALIGN_INVALID
ALIGN_LEFT
ALIGN_RIGHT
ALIGN_CENTER
CMFCCaptionBar::SetBorderSize
設定標題列的框線大小。
void SetBorderSize(int nSize);
參數
nSize
[in]標題橫條框線的新大小,以圖元為單位。
CMFCCaptionBar::SetButton
設定標題列的按鈕。
void SetButton(
LPCTSTR lpszLabel,
UINT uiCmdUI,
BarElementAlignment btnAlignmnet=ALIGN_LEFT,
BOOL bHasDropDownArrow=TRUE);
參數
lpszLabel
按鈕的命令標籤。
uiCmdUI
按鈕的命令識別碼。
btnAlignmnet
按鈕的對齊方式。
bHasDropDownArrow
如果按鈕顯示下拉箭號,則為 TRUE,否則為 FALSE。
CMFCCaptionBar::SetButtonPressed
指定按鈕是否保持按下狀態。
void SetButtonPressed(BOOL bPresed=TRUE);
參數
bPresed
如果按鈕保持按下狀態,則為 TRUE,否則為 FALSE。
CMFCCaptionBar::SetButtonToolTip
設定按鈕的工具提示。
void SetButtonToolTip(
LPCTSTR lpszToolTip,
LPCTSTR lpszDescription=NULL);
參數
lpszToolTip
[in]工具提示標題。
lpszDescription
[in]工具提示描述。
CMFCCaptionBar::SetFlatBorder
設定標題列的框線樣式。
void SetFlatBorder(BOOL bFlat=TRUE);
參數
bFlat
[in]TRUE 是表示 如果標題列的框線是平面的。 如果框線為 3D,則為 FALSE。
CMFCCaptionBar::SetIcon
設定標題列的圖示。
void SetIcon(
HICON hIcon,
BarElementAlignment iconAlignment=ALIGN_RIGHT);
參數
hIcon
[in]要設定之圖示的控制碼。
iconAlignment
[in]圖示的對齊方式。
備註
標題列可以顯示圖示或點陣圖。 請參閱 CMFCCaptionBar::SetBitmap 以瞭解如何顯示點陣圖。 如果您同時設定圖示和點陣圖,則一律會顯示圖示。 呼叫 CMFCCaptionBar::RemoveIcon ,從標題列移除圖示。
圖示會根據 iconAlignment 參數對齊。 它可以是下列 BarElementAlignment
其中一個值:
ALIGN_INVALID
ALIGN_LEFT
ALIGN_RIGHT
ALIGN_CENTER
CMFCCaptionBar::SetImageToolTip
設定標題列中影像的工具提示。
void SetImageToolTip(
LPCTSTR lpszToolTip,
LPCTSTR lpszDescription=NULL);
參數
lpszToolTip
[in]工具提示的文字。
lpszDescription
[in]工具提示描述。
CMFCCaptionBar::SetMargin
設定標題列專案的邊緣與標題列控制項邊緣之間的距離。
void SetMargin(int nMargin);
參數
nMargin
[in]標題列元素邊緣與標題列控制項邊緣之間的距離,以圖元為單位。
CMFCCaptionBar::SetText
設定標題列的文字標籤。
void SetText(
const CString& strText,
BarElementAlignment textAlignment=ALIGN_RIGHT);
參數
strText
[in]要設定的文字字串。
textAlignment
[in]文字對齊方式。
備註
文字標籤會對齊 textAlignment 參數所 指定。 它可以是下列 BarElementAlignment
其中一個值:
ALIGN_INVALID
ALIGN_LEFT
ALIGN_RIGHT
ALIGN_CENTER
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應