共用方式為


CMFCOutlookBar 類別

具有 Microsoft Outlook 2000 或 Outlook 2003 [ 巡覽窗格 ] 視覺外觀的索引標籤式窗格。 物件 CMFCOutlookBar 包含 CMFCOutlookBarTabCtrl 類別 物件和一系列索引標籤。 索引標籤可以是 CMFCOutlookBarPane 類別 物件或 CWnd衍生物件。 對於使用者,Outlook 功能區會顯示為一系列按鈕與一個顯示區域。 當使用者按一下按鈕時,對應的控制項或按鈕窗格隨即顯示。

語法

class CMFCOutlookBar : public CBaseTabbedPane

成員

公用建構函式

名稱 描述
CMFCOutlookBar::CMFCOutlookBar 預設建構函式。
CMFCOutlookBar::~CMFCOutlookBar 解構函式。

公用方法

名稱 描述
CMFCOutlookBar::AllowDestroyEmptyTabbedPane 指定是否可以終結空白索引卷標式窗格。 (覆寫 CBaseTabbedPane::AllowDestroyEmptyTabbedPane.)
CMFCOutlookBar::CanAcceptPane 判斷是否可以將另一個窗格停駐在 Outlook 列窗格。 (覆寫 CDockablePane::CanAcceptPane.)
CMFCOutlookBar::CanSetCaptionTextToTabName 判斷索引卷標窗格的標題是否顯示與使用中索引卷標相同的文字。(覆寫 CBaseTabbedPane::CanSetCaptionTextToTabName.)
CMFCOutlookBar::Create 建立 Outlook 列控件。
CMFCOutlookBar::CreateCustomPage 建立自定義 Outlook 列索引標籤。
CMFCOutlookBar::CreateObject 由建立此類別類型的動態執行個體架構所使用。
CMFCOutlookBar::D oesAllowDynInsertBefore 判斷使用者是否可以將控件列停駐在 Outlook 列外部邊緣。
CMFCOutlookBar::FloatTab 浮動窗格,但只有在窗格目前位於可中斷連結的索引卷標中。(覆寫 CBaseTabbedPane::FloatTab.)
CMFCOutlookBar::GetButtonsFont 會傳回 Outlook 列按鈕上的文字字型。
CMFCOutlookBar::GetTabArea 會傳回 Outlook 列上索引標籤區域的大小和位置。 (覆寫 CBaseTabbedPane::GetTabArea.)
CMFCOutlookBar::GetThisClass 由架構用來取得與這個類別類型相關聯之 CRuntimeClass 物件的指標。
CMFCOutlookBar::IsMode2003 判斷 Outlook 列的行為是否模仿 Microsoft Office Outlook 2003 的行為(請參閱)。
CMFCOutlookBar::OnAfterAnimation 使用動畫設定使用中索引標籤之後,由 CMFCOutlookBarTabCtrl::SetActiveTab 呼叫。
CMFCOutlookBar::OnBeforeAnimation 在索引標籤面使用動畫設定為使用中索引標籤之前,由 CMFCOutlookBarTabCtrl::SetActiveTab 呼叫。
CMFCOutlookBar::OnScroll 如果 Outlook 列向上或向下捲動,則由架構呼叫。
CMFCOutlookBar::RemoveCustomPage 拿掉自訂 Outlook 列索引標籤。
CMFCOutlookBar::SetButtonsFont 設定 Outlook 列按鈕上的文字字型。
CMFCOutlookBar::SetMode2003 指定 Outlook 列的行為是否模仿 Outlook 2003 的行為(請參閱)。

備註

如需 Outlook 列的範例,請參閱 OutlookDemo 範例:MFC OutlookDemo 應用程式

實作 Outlook 列

若要在您的應用程式中使用 CMFCOutlookBar 控制項,請遵循下列步驟:

  1. 內嵌 CMFCOutlookBar 物件到主框架視窗類別。

    class CMainFrame : public CMDIFrameWnd
    {
        // ...
        CMFCOutlookBar m_wndOutlookBar;
        CMFCOutlookBarPane m_wndOutlookPane;
        // ...
    };
    
  2. 在主框架中處理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);
    
  3. 使用 CBaseTabbedPane::GetUnderlyingWindow 取得基礎CMFCOutlookBarTabCtrl的指標。

    CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*) m_wndOutlookBar.GetUnderlyingWindow ();
    
  4. 針對包含按鈕的每個索引標籤,建立 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);
    
  5. 呼叫 CMFCOutlookBarTabCtrl::AddTab 以新增每個新的索引標籤。將 bDetachable 參數設定為 FALSE,使頁面不可中斷連結。 或者,使用 CMFCOutlookBarTabCtrl::AddControl 來新增可卸離的頁面。

    pOutlookBar->AddTab (&m_wndOutlookPane, "General", (UINT) -1, TRUE);
    
  6. 若要將衍生的控件 (例如 CMFCShellTreeCtrl 類別) 新增CWnd為索引標籤,請建立控件並呼叫 CMFCOutlookBarTabCtrl::AddTab 將它新增至 Outlook 列。

注意

您應該針對每個 CMFCOutlookBarPane Class 物件,以及每個 CWnd衍生物件使用唯一的控件標識碼。

若要在運行時間動態新增或刪除新頁面,請使用 CMFCOutlookBar::CreateCustomPageCMFCOutlookBar::RemoveCustomPage

Outlook 2003 模式

在 Outlook 2003 模式中,索引標籤按鈕位於 Outlook 列窗格底部。 當沒有足夠的空間來顯示按鈕時,它們會顯示為窗格底部工具列類似區域的圖示。

使用 CMFCOutlookBar::SetMode2003 啟用 Outlook 2003 模式。 使用 CMFCOutlookBarTabCtrl::SetToolbarImageList 來設定位圖,其中包含 Outlook 列底部顯示的圖示。 點陣圖中的圖示必須由索引標籤排序。

繼承階層架構

CObject

CCmdTarget

CWnd

CBasePane

CPane

CDockablePane

CBaseTabbedPane

CMFCOutlookBar

需求

標頭: 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 類別