Класс 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
в своем приложении выполните следующие действия:
Внедрите объект
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);
Получите указатель на базовый
CMFCOutlookBarTabCtrl
с помощью CBaseTabbedPane::GetUnderlyingWindow.CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*) m_wndOutlookBar.GetUnderlyingWindow ();
Создайте объект класса 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);
Вызовите CMFCOutlookBarTabCtrl::AddTab , чтобы добавить каждую новую вкладку. Задайте для параметра bDetachable значение FALSE, чтобы сделать страницу не отсоединяемой . Или используйте CMFCOutlookBarTabCtrl::AddControl для добавления отсоединяемых страниц.
pOutlookBar->AddTab (&m_wndOutlookPane, "General", (UINT) -1, TRUE);
Чтобы добавить производный
CWnd
элемент управления (например, класс CMFCShellTreeCtrl) в качестве вкладки, создайте элемент управления и вызовите CMFCOutlookBarTabCtrl::AddTab , чтобы добавить его в панель Outlook.
Примечание.
Следует использовать уникальные идентификаторы элементов управления для каждого объекта класса CMFCOutlookBarPane и для каждого CWnd
производного объекта.
Чтобы динамически добавлять или удалять новые страницы во время выполнения, используйте CMFCOutlookBar::CreateCustomPage и CMFCOutlookBar::RemoveCustomPage.
Режим Outlook 2003
В режиме Outlook 2003 кнопки вкладок расположены в нижней части панели панели Outlook. Если нет достаточного места для отображения кнопок, они отображаются как значки в области панели инструментов в нижней части области.
Используйте CMFCOutlookBar::SetMode2003, чтобы включить режим Outlook 2003 . Используйте CMFCOutlookBarTabCtrl::SetToolbarImageList , чтобы задать растровое изображение, содержащее значки, отображаемые в нижней части панели Outlook. Значки в растровом рисунке должны быть упорядочены по индексу табуляции.
Иерархия наследования
Требования
Заголовок: 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