Поделиться через


Класс CMFCOutlookBar

Область со вкладками, которая имеет внешний вид области Область переходов в Microsoft Outlook 2000 или Outlook 2003. Объект CMFCOutlookBar содержит объект класса CMFCOutlookBarTabCtrl и ряд вкладок. Вкладки могут быть объектами класса CMFCOutlookBarPane или CWndпроизводными объектами. Пользователю панель Outlook отображается как последовательность кнопок и область отображения. Когда пользователь нажимает кнопку, отображается соответствующая область элемента управления или кнопки.

Синтаксис

class CMFCOutlookBar : public CBaseTabbedPane

Участники

Открытые конструкторы

Имя Описание
CMFCOutlookBar::CMFCOutlookBar Конструктор по умолчанию.
CMFCOutlookBar::~CMFCOutlookBar Деструктор.

Открытые методы

Имя Описание
CMFCOutlookBar::AllowDetyEmptyTabbedPane Указывает, можно ли уничтожить пустую панель вкладок. (Переопределения CBaseTabbedPane::AllowDetyEmptyTabbedPane.)
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. Получите указатель на базовый CMFCOutlookBarTabCtrl с помощью CBaseTabbedPane::GetUnderlyingWindow.

    CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*) m_wndOutlookBar.GetUnderlyingWindow ();
    
  4. Создайте объект класса CMFCOutlookBarPane для каждой вкладки, содержащей кнопки.

    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. Чтобы добавить производный CWndэлемент управления (например, класс CMFCShellTreeCtrl) в качестве вкладки, создайте элемент управления и вызовите CMFCOutlookBarTabCtrl::AddTab , чтобы добавить его в панель Outlook.

Примечание.

Следует использовать уникальные идентификаторы элементов управления для каждого объекта класса CMFCOutlookBarPane и для каждого CWndпроизводного объекта.

Чтобы динамически добавлять или удалять новые страницы во время выполнения, используйте CMFCOutlookBar::CreateCustomPage и CMFCOutlookBar::RemoveCustomPage.

Режим Outlook 2003

В режиме Outlook 2003 кнопки вкладок расположены в нижней части панели панели Outlook. Если нет достаточного места для отображения кнопок, они отображаются как значки в области панели инструментов в нижней части области.

Используйте CMFCOutlookBar::SetMode2003, чтобы включить режим Outlook 2003 . Используйте CMFCOutlookBarTabCtrl::SetToolbarImageList , чтобы задать растровое изображение, содержащее значки, отображаемые в нижней части панели Outlook. Значки в растровом рисунке должны быть упорядочены по индексу табуляции.

Иерархия наследования

CObject

CCmdTarget

CWnd

CBasePane

CPane

CDockablePane

CBaseTabbedPane

CMFCOutlookBar

Требования

Заголовок: afxoutlookbar.h

CMFCOutlookBar::AllowDetyEmptyTabbedPane

Указывает, можно ли уничтожить пустую панель вкладок.

virtual BOOL AllowDestroyEmptyTabbedPane() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если пустая панель вкладок может быть уничтожена; в противном случае — ЗНАЧЕНИЕ FALSE. Реализация по умолчанию всегда возвращает ЗНАЧЕНИЕ TRUE.

Замечания

Если пустая панель вкладок не может быть уничтожена, платформа скрывает ее.

CMFCOutlookBar::CanAcceptPane

Определяет, можно ли закрепить другую область на панели панели Outlook.

virtual BOOL CanAcceptPane(const CBasePane* pBar) const;

Параметры

pBar
[in] Указатель на другую область, которая закреплена на этой панели.

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если другая область может быть закреплена на панели панели Outlook; в противном случае ЗНАЧЕНИЕ FALSE.

Замечания

Если панель Outlook находится в режиме Outlook 2003, закрепление не поддерживается, поэтому возвращаемое значение равно FALSE.

Если параметр pBar имеет значение NULL, этот метод возвращает ЗНАЧЕНИЕ FALSE.

В противном случае этот метод ведет себя как базовый метод CBasePane::CanAcceptPane, за исключением того, что даже если закрепление не включено, панель Outlook по-прежнему может включить закрепление другой панели Outlook.

CMFCOutlookBar::CanSetCaptionTextToTabName

Определяет, отображается ли заголовок для панели табуляции тот же текст, что и активная вкладка.

virtual BOOL CanSetCaptionTextToTabName() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если заголовок окна панели Outlook автоматически устанавливается в текст активной вкладки; в противном случае ЗНАЧЕНИЕ 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] Содержит размер и позицию (в координатах клиента) нижней области вкладок при возврате функции.

Замечания

Платформа вызывает этот метод, чтобы определить тип закрепления на целевой панели. Когда платформа определяет, что пользователь перетаскивает панель, которая будет закреплена над областью вкладок целевой панели, она пытается добавить первую панель в качестве новой вкладки целевой панели. В противном случае она пытается закрепить первую панель в соответствующей стороне целевой панели. Платформа создает новый контейнер с ползунок для размещения дополнительной закрепленной панели.

Реализация по умолчанию GetTabArea возвращает всю клиентская область панели Outlook, если панель 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] ЗНАЧЕНИЕ TRUE, если панель Outlook прокручивается вниз или значение FALSE, если она прокручивается вверх.

Замечания

CMFCOutlookBar::RemoveCustomPage

Удаляет пользовательскую страницу вкладки панели Outlook.

BOOL RemoveCustomPage(
    UINT uiPage,
    CMFCOutlookBarTabCtrl* pTargetWnd);

Параметры

uiPage
[in] Отсчитываемый от нуля индекс страницы в родительском окне Outlook.

pTargetWnd
[in] Указатель на родительское окно Outlook.

Возвращаемое значение

Ненулевое значение, если пользовательская страница успешно удалена; в противном случае — 0.

Замечания

Вызовите эту функцию для удаления пользовательских страниц. При удалении страницы его идентификатор элемента управления возвращается в пул доступных идентификаторов.

Необходимо указать указатель на объект класса CMFCOutlookBarTabCtrl, в котором будет удалена страница. Обратите внимание, что пользователь может перемещать отсоединяемые страницы между разными полосами Outlook, но сведения о пользовательской странице находятся в объекте панели Outlook, для которого вы назвали CMFCOutlookBar::CreateCustomPage.

Используйте 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 соответствует поведению панели Outlook в Microsoft Office 2003.

По умолчанию этот режим отключен.

Примечание.

Эта функция должна вызываться перед CMFCOutlookBar::Create.

См. также

Диаграмма иерархии
Классы
Класс CBaseTabbedPane
Класс CMFCOutlookBarTabCtrl
Класс CMFCOutlookBarPane