CMFCOutlookBar 類別
具有 Microsoft Outlook 2000 或 Outlook 2003 [ 巡覽窗格 ] 視覺外觀的索引標籤式窗格。 物件 CMFCOutlookBar
包含 CMFCOutlookBarTabCtrl 類別 物件和一系列索引標籤。 索引標籤可以是 CMFCOutlookBarPane 類別 物件或 CWnd
衍生物件。 對於使用者,Outlook 功能區會顯示為一系列按鈕與一個顯示區域。 當使用者按一下按鈕時,對應的控制項或按鈕窗格隨即顯示。
語法
class CMFCOutlookBar : public CBaseTabbedPane
成員
公用建構函式
名稱 | 描述 |
---|---|
CMFCOutlookBar::CMFCOutlookBar |
預設建構函式。 |
CMFCOutlookBar::~CMFCOutlookBar |
解構函式。 |
公用方法
備註
如需 Outlook 列的範例,請參閱 OutlookDemo 範例:MFC OutlookDemo 應用程式。
實作 Outlook 列
若要在您的應用程式中使用 CMFCOutlookBar
控制項,請遵循下列步驟:
內嵌
CMFCOutlookBar
物件到主框架視窗類別。class CMainFrame : public CMDIFrameWnd { // ... CMFCOutlookBar m_wndOutlookBar; CMFCOutlookBarPane m_wndOutlookPane; // ... };
在主框架中處理WM_CREATE訊息時,呼叫 CMFCOutlookBar::Create 方法來建立 Outlook 列索引卷標控件。
m_wndOutlookBar.Create (_T("Shortcuts"), this, CRect (0, 0, 100, 100), ID_VIEW_OUTLOOKBAR, WS_CHILD | WS_VISIBLE | CBRS_LEFT);
使用 CBaseTabbedPane::GetUnderlyingWindow 取得基礎
CMFCOutlookBarTabCtrl
的指標。CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*) m_wndOutlookBar.GetUnderlyingWindow ();
針對包含按鈕的每個索引標籤,建立 CMFCOutlookBarPane Class 物件。
m_wndOutlookPane.Create(&m_wndOutlookBar, AFX_DEFAULT_TOOLBAR_STYLE, ID_OUTLOOK_PANE_GENERAL, AFX_CBRS_FLOAT | AFX_CBRS_RESIZE); // make the Outlook pane detachable (enable docking) m_wndOutlookPane.EnableDocking(CBRS_ALIGN_ANY); // add buttons m_wndOutlookPane.AddButton(theApp.LoadIcon (IDR_MAINFRAME), "About", ID_APP_ABOUT); m_wndOutlookPane.AddButton (theApp.LoadIcon (IDR_CUSTOM_OPEN_ICON), "Open", ID_FILE_OPEN);
呼叫 CMFCOutlookBarTabCtrl::AddTab 以新增每個新的索引標籤。將 bDetachable 參數設定為 FALSE,使頁面不可中斷連結。 或者,使用 CMFCOutlookBarTabCtrl::AddControl 來新增可卸離的頁面。
pOutlookBar->AddTab (&m_wndOutlookPane, "General", (UINT) -1, TRUE);
若要將衍生的控件 (例如 CMFCShellTreeCtrl 類別) 新增
CWnd
為索引標籤,請建立控件並呼叫 CMFCOutlookBarTabCtrl::AddTab 將它新增至 Outlook 列。
注意
您應該針對每個 CMFCOutlookBarPane Class 物件,以及每個 CWnd
衍生物件使用唯一的控件標識碼。
若要在運行時間動態新增或刪除新頁面,請使用 CMFCOutlookBar::CreateCustomPage 和 CMFCOutlookBar::RemoveCustomPage。
Outlook 2003 模式
在 Outlook 2003 模式中,索引標籤按鈕位於 Outlook 列窗格底部。 當沒有足夠的空間來顯示按鈕時,它們會顯示為窗格底部工具列類似區域的圖示。
使用 CMFCOutlookBar::SetMode2003 啟用 Outlook 2003 模式。 使用 CMFCOutlookBarTabCtrl::SetToolbarImageList 來設定位圖,其中包含 Outlook 列底部顯示的圖示。 點陣圖中的圖示必須由索引標籤排序。
繼承階層架構
需求
標頭: afxoutlookbar.h
CMFCOutlookBar::AllowDestroyEmptyTabbedPane
指定是否可以終結空白索引卷標式窗格。
virtual BOOL AllowDestroyEmptyTabbedPane() const;
傳回值
如果可以終結空白索引卷標式窗格,則為TRUE;否則為 FALSE。 默認實作一律會傳回 TRUE。
備註
如果無法終結空白索引卷標式窗格,架構會改為隱藏它。
CMFCOutlookBar::CanAcceptPane
判斷是否可以將另一個窗格停駐在 Outlook 列窗格。
virtual BOOL CanAcceptPane(const CBasePane* pBar) const;
參數
pBar
[in]停駐至此窗格之另一個窗格的指標。
傳回值
如果另一個窗格可以停駐在 Outlook 列窗格,則為 TRUE;否則為 FALSE。
備註
如果 Outlook 列處於 Outlook 2003 模式,則不支援停駐,因此傳回值為 FALSE。
如果 pBar 參數為 NULL,這個方法會傳回 FALSE。
否則,這個方法的行為會作為基底方法 CBasePane::CanAcceptPane,不同之處在於即使未啟用停駐,Outlook 列仍然可以讓另一個 Outlook 列停駐。
CMFCOutlookBar::CanSetCaptionTextToTabName
判斷索引卷標窗格的標題是否顯示與使用中索引卷標相同的文字。
virtual BOOL CanSetCaptionTextToTabName() const;
傳回值
如果 Outlook 列視窗標題會自動設定為使用中索引標籤的文字,則為 TRUE;否則為 FALSE。
備註
使用 CBaseTabbedPane::EnableSetCaptionTextToTabName 來啟用或停用此功能。
在 Outlook 2003 模式中,一律會啟用此設定。
CMFCOutlookBar::Create
建立 Outlook 列控件。
virtual BOOL Create(
LPCTSTR lpszCaption,
CWnd* pParentWnd,
const RECT& rect,
UINT nID,
DWORD dwStyle,
DWORD dwControlBarStyle=AFX_CBRS_RESIZE,
CCreateContext* pContext=NULL);
參數
lpszCaption
[in]指定視窗標題。
pParentWnd
[in]指定父視窗的指標。 它不得為 NULL。
rect
[in]指定以像素為單位的 Outlook 列大小和位置。
nID
[in]指定控件識別碼。 必須與應用程式中使用的其他控件標識碼不同。
dwStyle
[in]指定所需的控制項列樣式。 如需可能的值,請參閱 視窗樣式。
dwControlBarStyle
[in]指定特殊連結庫定義的樣式。
pContext
[in]建立內容。
傳回值
如果方法成功,則為非零;否則為 0。
備註
您會在兩個步驟中建構 CMFCOutlookBar
物件。 先呼叫建構函式,然後呼叫 Create
,這會建立 outlook 列控件,並將它附加至 CMFCOutlookBar
物件。
如需 dwControlBarStyle 所指定之可用連結庫定義樣式的清單,請參閱 CBasePane::CreateEx。
範例
下列範例示範如何使用 Create
類別的 CMFCOutlookBar
方法。 此代碼段是 Outlook 多重檢視範例的一部分。
CMFCOutlookBar m_wndShortcutsBar;
// int nInitialWidth
// CString strCaption
if (!m_wndShortcutsBar.Create(strCaption, this,
CRect(0, 0, nInitialWidth, nInitialWidth),
ID_VIEW_OUTLOOKBAR, WS_CHILD | WS_VISIBLE | CBRS_LEFT))
{
TRACE0("Failed to create outlook bar\n");
return FALSE; // fail to create
}
CMFCOutlookBar::CreateCustomPage
建立自定義 Outlook 列索引標籤。
CMFCOutlookBarPane* CreateCustomPage(
LPCTSTR lpszPageName,
BOOL bActivatePage=TRUE,
DWORD dwEnabledDocking=CBRS_ALIGN_ANY,
BOOL bEnableTextLabels=TRUE);
參數
lpszPageName
[in]頁面標籤。
bActivatePage
[in]如果為 TRUE,頁面會在建立時變成作用中。
dwEnabledDocking
[in]CBRS_ALIGN_旗標的組合,指定頁面中斷連結時啟用的停駐端。
bEnableTextLabels
[in]如果為 TRUE,則會針對位於頁面上的按鈕啟用文字標籤。
傳回值
新建立頁面的指標,如果建立失敗,則為 NULL。
備註
使用此方法可讓使用者建立自定義 Outlook 列頁面。 每個應用程式最多可以建立 100 個頁面。 頁面控件標識碼從0xF000開始。 如果自定義 Outlook 列頁面總數超過 100,則建立失敗。
使用 CMFCOutlookBar::RemoveCustomPage 刪除自定義頁面。
CMFCOutlookBar::D oesAllowDynInsertBefore
指定使用者是否可以將窗格停駐在 Outlook 列外部邊緣。
DECLARE_MESSAGE_MAP virtual BOOL DoesAllowDynInsertBefore() const;
傳回值
默認實作會傳回 FALSE。
備註
架構會在尋找要停駐動態窗格的位置時呼叫 DoesAllowDynInsertBefore
方法。 如果函式傳回 FALSE,則架構不允許在窗格外部邊緣停駐任何動態窗格。
通常,您會建立 Outlook 列做為靜態非浮動控件。 您可以在衍生類別中覆寫此函式,並傳回 TRUE 以變更此行為。
注意
因為動態窗格會在停駐時檢查停駐靜態窗格的狀態,因此您應該盡可能在靜態窗格之後停駐動態窗格。
CMFCOutlookBar::FloatTab
浮動窗格。
virtual BOOL FloatTab(
CWnd* pBar,
int nTabID,
AFX_DOCK_METHOD dockMethod,
BOOL bHide);
參數
pBar
[in]要浮動之窗格的指標。
nTabID
[in]要浮動之索引標籤的以零起始的索引。
dockMethod
[in]指定要用來讓窗格浮點數的方法。 如需詳細資訊,請參閱 CBaseTabbedPane::FloatTab。
bHide
[in]TRUE 表示在浮動之前隱藏窗格;否則為 FALSE。 不同於這個方法的基類版本,此參數沒有預設值。
傳回值
如果窗格浮動,則為TRUE;否則為 FALSE。
備註
這個方法就像 CBaseTabbedPane::FloatTab ,不同之處在於它不會在 Outlook 列控件上啟用最後一個剩餘的索引卷標來浮動。
CMFCOutlookBar::GetButtonsFont
會傳回 Outlook 列之頁面按鈕索引標籤上的文字字型。
CFont* GetButtonsFont() const;
傳回值
字型物件的指標,用來在 Outlook 列頁面按鈕索引標籤上顯示文字。
備註
使用此函式來擷取用來在 Outlook 頁面按鈕索引卷標上顯示文字的字型。 您可以在 CMFCOutlookBar::SetButtonsFont 上 呼叫 來設定字型。
CMFCOutlookBar::GetTabArea
決定 Outlook 列上索引標籤區域的大小和位置。
virtual void GetTabArea(
CRect& rectTabAreaTop,
CRect& rectTabAreaBottom) const;
參數
rectTabAreaTop
[out]函式傳回時,包含頂端索引卷標區域的大小和位置(在用戶端座標中)。
rectTabAreaBottom
[out]包含函式傳回時,底部索引卷標區域的大小和位置(在用戶端座標中)。
備註
架構會呼叫此方法,以判斷目標窗格的停駐類型。 當架構判斷使用者拖曳要停駐在目標窗格的索引卷標區域上方時,它會嘗試將第一個窗格新增為目標窗格的新索引卷標。 否則,它會嘗試將第一個窗格停駐在目標窗格的適當端。 架構會建立具有滑桿的新容器,以容納額外的停駐窗格。
如果 Outlook 列是靜態的,則的預設實 GetTabArea
作會傳回 Outlook 列的整個工作區;也就是說,如果 Outlook 列無法浮動,則為 。 否則,它會傳回頁面按鈕在 Outlook 列控件頂端和底部採用的區域。
覆寫衍生自 CMFCOutlookBar
的類別中的這個方法,以變更此行為。
CMFCOutlookBar::IsMode2003
指定 Outlook 列的行為是否模仿 Microsoft Office Outlook 2003 的行為。
BOOL IsMode2003() const;
傳回值
如果 Outlook 列以 Microsoft Office 2003 模式執行,則為非零;否則為 0。
備註
您可以使用 CMFCOutlookBar::SetMode2003 來啟用此模式。
CMFCOutlookBar::OnAfterAnimation
使用動畫設定使用中索引標籤之後,由 CMFCOutlookBarTabCtrl::SetActiveTab 呼叫。
virtual void OnAfterAnimation(int nPage);
參數
nPage
[in]已作用中索引標籤的以零起始的索引。
備註
設定使用中索引標籤的視覺效果取決於您是否已啟用動畫。 如需詳細資訊,請參閱 CMFCOutlookBarTabCtrl::EnableAnimation。
CMFCOutlookBar::OnBeforeAnimation
在索引標籤面使用動畫設定為使用中索引標籤之前,由 CMFCOutlookBarTabCtrl::SetActiveTab 呼叫。
virtual BOOL OnBeforeAnimation(int nPage);
參數
nPage
[in]即將設定為使用中之索引標籤的以零起始的索引。
傳回值
如果動畫應該用於設定新的使用中索引標籤,則傳回TRUE;如果應該停用動畫,則傳回 FALSE。
備註
CMFCOutlookBar::OnScroll
如果 Outlook 列向上或向下捲動,則由架構呼叫。
virtual void OnScroll(BOOL bDown);
參數
bDown
[in]如果 Outlook 列向下捲動,則為 TRUE;如果 Outlook 列向上捲動,則為 FALSE。
備註
CMFCOutlookBar::RemoveCustomPage
拿掉自訂 Outlook 列索引標籤面。
BOOL RemoveCustomPage(
UINT uiPage,
CMFCOutlookBarTabCtrl* pTargetWnd);
參數
uiPage
[in]父 Outlook 視窗中頁面的以零起始的索引。
pTargetWnd
[in]父 Outlook 視窗的指標。
傳回值
如果已成功移除自定義頁面,則為非零;否則為 0。
備註
呼叫此函式以刪除自定義頁面。 拿掉頁面時,其控件標識符會傳回至可用標識符的集區。
您必須提供 CMFCOutlookBarTabCtrl 類別物件的指標,其中要移除的頁面目前所在的位置。 請注意,用戶可以在不同的 Outlook 列之間移動可卸離頁面,但自定義頁面的相關信息位於您稱為 CMFCOutlookBar::CreateCustomPage 的 Outlook 列物件中。
使用 CBaseTabbedPane::GetUnderlyingWindow 取得 Outlook 視窗的指標。
CMFCOutlookBar::SetButtonsFont
設定 Outlook 列按鈕上的文字字型。
void SetButtonsFont(
CFont* pFont,
BOOL bRedraw=TRUE);
參數
pFont
[in]指定新的字型。
bRedraw
[in]如果為 TRUE,則會重新繪製 Outlook 列。
備註
使用此方法可設定 Outlook 索引標籤面按鈕上所顯示文字的字型。
CMFCOutlookBar::SetMode2003
指定 Outlook 列的行為是否模仿 Outlook 2003 的行為。
void SetMode2003(BOOL bMode2003=TRUE);
參數
bMode2003
[in]如果為 TRUE,則會啟用 Office 2003 模式。
備註
使用此函式來啟用或停用 Office 2003 模式。 在此模式中,Outlook 列有一個具有自定義按鈕的額外工具列。 Outlook 列的行為符合 Office 2003 Microsoft Outlook 列的行為。
預設會停用此模式。
注意
此函式必須在 CMFCOutlookBar::Create 之前呼叫。
另請參閱
階層架構圖表
類別
CBaseTabbedPane 類別
CMFCOutlookBarTabCtrl 類別
CMFCOutlookBarPane 類別