Compartir a través de


CMFCOutlookBar (clase)

Un panel con pestañas con el aspecto visual del Panel de navegación en Microsoft Outlook 2000 u Outlook 2003. El objeto CMFCOutlookBar contiene un objeto de clase CMFCOutlookBarTabCtrl y una serie de fichas. Las fichas pueden ser objetos de clase CMFCOutlookBarPane u objetos derivados de CWnd. Para el usuario, la barra de Outlook aparece como una serie de botones y un área de presentación. Cuando el usuario hace clic en un botón, se muestra el panel de control o botón correspondiente .

Sintaxis

class CMFCOutlookBar : public CBaseTabbedPane

Miembros

Constructores públicos

Nombre Descripción
CMFCOutlookBar::CMFCOutlookBar Constructor predeterminado.
CMFCOutlookBar::~CMFCOutlookBar Destructor.

Métodos públicos

Nombre Descripción
CMFCOutlookBar::AllowDestroyEmptyTabbedPane Especifica si se puede destruir un panel con fichas vacío. (Invalida CBaseTabbedPane::AllowDestroyEmptyTabbedPane).
CMFCOutlookBar::CanAcceptPane Determina si se puede acoplar otro panel al panel de la barra de Outlook. (Invalida CDockablePane::CanAcceptPane).
CMFCOutlookBar::CanSetCaptionTextToTabName Determina si en el título del panel con fichas se muestra el mismo texto que en la ficha activa. (Invalida CBaseTabbedPane::CanSetCaptionTextToTabName).
CMFCOutlookBar::Create Crea el control de la barra de Outlook.
CMFCOutlookBar::CreateCustomPage Crea una ficha personalizada de la barra de Outlook.
CMFCOutlookBar::CreateObject Usado por el marco de trabajo para crear una instancia dinámica de este tipo de clase.
CMFCOutlookBar::DoesAllowDynInsertBefore Determina si un usuario puede acoplar una barra de control en el borde exterior de la barra de Outlook.
CMFCOutlookBar::FloatTab Convierte un panel en flotante, pero solo si se encuentra actualmente en una pestaña desasociable. (Invalida a CBaseTabbedPane::FloatTab).
CMFCOutlookBar::GetButtonsFont Devuelve la fuente del texto en los botones de la barra de Outlook.
CMFCOutlookBar::GetTabArea Devuelve el tamaño y la posición de las áreas de fichas de la barra de Outlook. (Invalida CBaseTabbedPane::GetTabArea).
CMFCOutlookBar::GetThisClass Lo usa el marco para obtener un puntero al objeto CRuntimeClass asociado a este tipo de clase.
CMFCOutlookBar::IsMode2003 Determina si el comportamiento de la barra de Outlook imita al de Microsoft Office Outlook 2003 (vea Comentarios).
CMFCOutlookBar::OnAfterAnimation Lo llama CMFCOutlookBarTabCtrl::SetActiveTab después de establecer la ficha activa mediante animación.
CMFCOutlookBar::OnBeforeAnimation Lo llama CMFCOutlookBarTabCtrl::SetActiveTab antes de establecer una ficha como la ficha activa mediante animación.
CMFCOutlookBar::OnScroll Lo llama el marco si la barra de Outlook se desplaza hacia arriba o hacia abajo.
CMFCOutlookBar::RemoveCustomPage Quita una ficha personalizada de la barra de Outlook.
CMFCOutlookBar::SetButtonsFont Establece la fuente del texto en los botones de la barra de Outlook.
CMFCOutlookBar::SetMode2003 Especifica si el comportamiento de la barra de Outlook imita al de Outlook 2003 (vea Comentarios).

Comentarios

Para un ejemplo de una barra de Outlook, vea Ejemplo de OutlookDemo: aplicación OutlookDemo de MFC.

Implementación de la barra de Outlook

Para usar el control CMFCOutlookBar de la aplicación, siga estos pasos:

  1. Incruste un objeto CMFCOutlookBar en la clase de ventana de marco principal.

    class CMainFrame : public CMDIFrameWnd
    {
        // ...
        CMFCOutlookBar m_wndOutlookBar;
        CMFCOutlookBarPane m_wndOutlookPane;
        // ...
    };
    
  2. Al procesar el mensaje WM_CREATE en el marco principal, llame al método CMFCOutlookBar::Create para crear el control de ficha de la barra de Outlook.

    m_wndOutlookBar.Create (_T("Shortcuts"),
        this,
        CRect (0, 0, 100, 100),
        ID_VIEW_OUTLOOKBAR,
        WS_CHILD | WS_VISIBLE | CBRS_LEFT);
    
  3. Obtenga un puntero al elemento CMFCOutlookBarTabCtrl subyacente mediante CBaseTabbedPane::GetUnderlyingWindow.

    CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*) m_wndOutlookBar.GetUnderlyingWindow ();
    
  4. Cree un objeto CMFCOutlookBarPane Class para cada ficha que contenga botones.

    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. Llame a CMFCOutlookBarTabCtrl::AddTab para agregar cada nueva ficha. Establezca el parámetro bDetachable en FALSE para que una página no se pueda desasociar. O bien, use CMFCOutlookBarTabCtrl::AddControl para agregar páginas desasociables.

    pOutlookBar->AddTab (&m_wndOutlookPane, "General", (UINT) -1, TRUE);
    
  6. Para agregar un control derivado de CWnd (por ejemplo, CMFCShellTreeCtrl Class) como ficha, cree el control y llame a CMFCOutlookBarTabCtrl::AddTab para agregarlo a la barra de Outlook.

Nota:

Debe usar id. de control únicos para cada objeto CMFCOutlookBarPane Class y para cada objeto derivado de CWnd.

Para agregar o eliminar páginas nuevas dinámicamente en tiempo de ejecución, use CMFCOutlookBar::CreateCustomPage y CMFCOutlookBar::RemoveCustomPage.

Modo de Outlook 2003

En el modo Outlook 2003, los botones de ficha se colocan en la parte inferior del panel de la barra de Outlook. Cuando no hay espacio suficiente para mostrar los botones, se muestran como iconos en un área similar a una barra de herramientas a lo largo de la parte inferior del panel.

Use CMFCOutlookBar::SetMode2003 para habilitar el modo de Outlook 2003. Use CMFCOutlookBarTabCtrl::SetToolbarImageList para establecer el mapa de bits que contiene los iconos que se muestran en la parte inferior de la barra de Outlook. Los iconos del mapa de bits deben ordenarse por el índice de ficha.

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CBasePane

CPane

CDockablePane

CBaseTabbedPane

CMFCOutlookBar

Requisitos

Encabezado: afxoutlookbar.h

CMFCOutlookBar::AllowDestroyEmptyTabbedPane

Especifica si se puede destruir un panel con fichas vacío.

virtual BOOL AllowDestroyEmptyTabbedPane() const;

Valor devuelto

Es TRUE si se puede destruir un panel con fichas vacío; de lo contrario, es FALSE. La implementación predeterminada siempre devuelve TRUE.

Comentarios

Si no se puede destruir un panel con fichas vacío, el marco lo oculta en su lugar.

CMFCOutlookBar::CanAcceptPane

Determina si se puede acoplar otro panel al panel de la barra de Outlook.

virtual BOOL CanAcceptPane(const CBasePane* pBar) const;

Parámetros

pBar
[in] Puntero a otro panel que se está acoplando a este panel.

Valor devuelto

TRUE si se puede acoplar otro panel al panel de la barra de Outlook; en caso contrario, FALSE.

Comentarios

Si la barra de Outlook está en modo de Outlook 2003, no se admite el acoplamiento, por lo que el valor devuelto es FALSE.

Si el parámetro pBar es NULL, este método devuelve FALSE.

De lo contrario, este método se comporta como el método base CBasePane::CanAcceptPane, salvo que aunque no esté habilitado el acoplamiento, una barra de Outlook aún pueda permitir que se acople otra barra de Outlook.

CMFCOutlookBar::CanSetCaptionTextToTabName

Determina si el título del panel con fichas muestra el mismo texto que la ficha activa.

virtual BOOL CanSetCaptionTextToTabName() const;

Valor devuelto

TRUE si el título de la ventana de la barra de Outlook se establece automáticamente en el texto de la ficha activa; en caso contrario, FALSE.

Comentarios

Use CBaseTabbedPane::EnableSetCaptionTextToTabName para habilitar o deshabilitar esta funcionalidad.

En el modo de Outlook 2003, esta configuración siempre está habilitada.

CMFCOutlookBar::Create

Crea el control de la barra de Outlook.

virtual BOOL Create(
    LPCTSTR lpszCaption,
    CWnd* pParentWnd,
    const RECT& rect,
    UINT nID,
    DWORD dwStyle,
    DWORD dwControlBarStyle=AFX_CBRS_RESIZE,
    CCreateContext* pContext=NULL);

Parámetros

lpszCaption
[in] Especifica el título de la ventana.

pParentWnd
[in] Especifica un puntero a una ventana primaria. No debe ser NULL.

rect
[in] Especifica el tamaño y la posición de la barra de Outlook en píxeles.

Nid
[in] Especifica el id. de control. Debe ser distinto de los demás id. de control usados en la aplicación.

dwStyle
[in] Especifica el estilo de barra de control deseado. Para los valores posibles, consulte Estilos de ventana.

dwControlBarStyle
[in] Especifica los estilos especiales definidos por la biblioteca.

pContext
[in] Crea un contexto.

Valor devuelto

Distinto de cero si el método es correcto; en caso contrario, 0.

Comentarios

El objeto CMFCOutlookBar se construye en dos pasos. En primer lugar, llame al constructor y, luego, a Create, lo que crea el control de barra de Outlook y lo asocia al objeto CMFCOutlookBar.

Consulte CBasePane::CreateEx para obtener la lista de los estilos definidos por la biblioteca disponibles que dwControlBarStyle debe especificar.

Ejemplo

En el siguiente ejemplo se muestra cómo se utiliza el método Create de la clase CMFCOutlookBar. Este fragmento de código forma parte del ejemplo de varias vistas de 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

Crea una ficha personalizada de la barra de Outlook.

CMFCOutlookBarPane* CreateCustomPage(
    LPCTSTR lpszPageName,
    BOOL bActivatePage=TRUE,
    DWORD dwEnabledDocking=CBRS_ALIGN_ANY,
    BOOL bEnableTextLabels=TRUE);

Parámetros

lpszPageName
[in] Etiqueta de página.

bActivatePage
[in] Si es TRUE, la página se activa en la creación.

dwEnabledDocking
[in] Combinación de marcas de CBRS_ALIGN_ que especifica los lados de acoplamiento habilitados cuando se desasocia la página.

bEnableTextLabels
[in] Si es TRUE, las etiquetas de texto están habilitadas para los botones que residen en la página.

Valor devuelto

Puntero a la página recién creada o NULL si se produjo un error en la creación.

Comentarios

Use este método para permitir que los usuarios creen páginas personalizadas de la barra de Outlook. Puede crear hasta 100 páginas por aplicación. Los id. de control de página comienzan a partir de 0xF000. Se produce un error en la creación si el número total de páginas personalizadas de la barra de Outlook supera las 100.

Use CMFCOutlookBar::RemoveCustomPage para eliminar páginas personalizadas.

CMFCOutlookBar::DoesAllowDynInsertBefore

Especifica si un usuario puede acoplar un panel en el borde exterior de la barra de Outlook.

DECLARE_MESSAGE_MAP virtual BOOL DoesAllowDynInsertBefore() const;

Valor devuelto

La implementación predeterminada devuelve FALSE.

Comentarios

El marco llama al método DoesAllowDynInsertBefore cuando busca una ubicación para acoplar un panel dinámico. Si la función devuelve FALSE, el marco no permite el acoplamiento de ningún panel dinámico en los bordes exteriores del panel.

Normalmente, se crea una barra de Outlook como un control estático no flotante. Puede invalidar esta función en una clase derivada y devolver TRUE para cambiar este comportamiento.

Nota:

Dado que los paneles dinámicos comprueban el estado de los paneles estáticos acoplados al acoplarse, debe acoplar los paneles dinámicos después de los paneles estáticos siempre que sea posible.

CMFCOutlookBar::FloatTab

Hace que un panel sea flotante.

virtual BOOL FloatTab(
    CWnd* pBar,
    int nTabID,
    AFX_DOCK_METHOD dockMethod,
    BOOL bHide);

Parámetros

pBar
[in] Puntero al panel que va a ser flotante.

nTabID
[in] Índice de base cero de la ficha que va a ser flotante.

dockMethod
[in] Especifica el método que se va a usar para que el panel sea flotante. Para más información, vea CBaseTabbedPane::FloatTab.

bHide
[in] Es TRUE para ocultar el panel antes de que sea flotante; de lo contrario, es FALSE. A diferencia de la versión de clase base de este método, este parámetro no tiene un valor predeterminado.

Valor devuelto

Es TRUE si el panel es flotante; de lo contrario, es FALSE.

Comentarios

Este método es como CBaseTabbedPane::FloatTab, salvo que no habilita la última ficha que queda en un control de barra de Outlook para que flote.

CMFCOutlookBar::GetButtonsFont

Devuelve la fuente del texto en las fichas de botón de página de la barra de Outlook.

CFont* GetButtonsFont() const;

Valor devuelto

Puntero al objeto de fuente que se usa para mostrar texto en fichas de botón de página de la barra de Outlook.

Comentarios

Use esta función para recuperar la fuente que se usa para mostrar el texto en las fichas de botón de página de Outlook. Puede establecer la fuente llamando a en CMFCOutlookBar::SetButtonsFont.

CMFCOutlookBar::GetTabArea

Determina el tamaño y la posición de las áreas de fichas de la barra de Outlook.

virtual void GetTabArea(
    CRect& rectTabAreaTop,
    CRect& rectTabAreaBottom) const;

Parámetros

rectTabAreaTop
[out] Contiene el tamaño y la posición (en las coordenadas del cliente) del área de fichas superior cuando se devuelve la función.

rectTabAreaBottom
[out] Contiene el tamaño y la posición (en las coordenadas del cliente) del área de fichas inferior cuando se devuelve la función.

Comentarios

El marco llama a este método para determinar el tipo de acoplamiento en el panel de destino. Cuando el marco determina que el usuario arrastra el panel que se va a acoplar sobre el área de fichas del panel de destino, intenta agregar el primer panel como una nueva ficha del panel de destino. De lo contrario, intenta acoplar el primer panel en un lado adecuado del panel de destino. El marco crea un nuevo contenedor con un control deslizante para dar cabida al panel acoplado adicional.

La implementación predeterminada de GetTabArea devuelve el área de cliente completa de la barra de Outlook si la barra de Outlook es estática; es decir, si la barra de Outlook no puede flotar. De lo contrario, devuelve el área que ocupan los botones de página en la parte superior e inferior del control de barra de Outlook.

Invalide este método en la clase derivada de CMFCOutlookBar para cambiar este comportamiento.

CMFCOutlookBar::IsMode2003

Especifica si el comportamiento de la barra de Outlook imita al de Microsoft Office Outlook 2003.

BOOL IsMode2003() const;

Valor devuelto

Distinto de cero si la barra de Outlook se ejecuta en modo de Microsoft Office 2003; de lo contrario, 0.

Comentarios

Puede habilitar este modo mediante CMFCOutlookBar::SetMode2003.

CMFCOutlookBar::OnAfterAnimation

Lo llama CMFCOutlookBarTabCtrl::SetActiveTab después de establecer la ficha activa mediante animación.

virtual void OnAfterAnimation(int nPage);

Parámetros

nPage
[in] Índice de base cero de la ficha que se ha activado.

Comentarios

El efecto visual de establecer la pestaña activa depende de si ha habilitado la animación. Para más información, vea CMFCOutlookBarTabCtrl::EnableAnimation.

CMFCOutlookBar::OnBeforeAnimation

Lo llama CMFCOutlookBarTabCtrl::SetActiveTab antes de establecer una ficha como la ficha activa mediante animación.

virtual BOOL OnBeforeAnimation(int nPage);

Parámetros

nPage
[in] Índice de base cero de la ficha que está a punto de activarse.

Valor devuelto

Devuelve TRUE si se debe usar la animación al establecer la nueva ficha activa o FALSE si se debe deshabilitar la animación.

Comentarios

CMFCOutlookBar::OnScroll

Lo llama el marco si la barra de Outlook se desplaza hacia arriba o hacia abajo.

virtual void OnScroll(BOOL bDown);

Parámetros

bDown
[in] TRUE si la barra de Outlook se desplaza hacia abajo o FALSE si se desplaza hacia arriba.

Comentarios

CMFCOutlookBar::RemoveCustomPage

Quita una ficha personalizada de la barra de Outlook.

BOOL RemoveCustomPage(
    UINT uiPage,
    CMFCOutlookBarTabCtrl* pTargetWnd);

Parámetros

uiPage
[in] Índice de base cero de la página en la ventana primaria de Outlook.

pTargetWnd
[in] Puntero a la ventana primaria de Outlook.

Valor devuelto

Distinto de cero si la página personalizada se ha quitado correctamente; de lo contrario, 0.

Comentarios

Llame a esta función para eliminar páginas personalizadas. Cuando se quita la página, se devuelve su id. de control al grupo de id. disponibles.

Debe proporcionar un puntero al objeto CMFCOutlookBarTabCtrl Class en el que reside actualmente la página que se va a quitar. Tenga en cuenta que un usuario puede mover páginas desasociables entre diferentes barras de Outlook, pero la información sobre una página personalizada reside en el objeto de barra de Outlook para el que ha llamado CMFCOutlookBar::CreateCustomPage.

Use CBaseTabbedPane::GetUnderlyingWindow para obtener un puntero a la ventana de Outlook.

CMFCOutlookBar::SetButtonsFont

Establece la fuente del texto en los botones de la barra de Outlook.

void SetButtonsFont(
    CFont* pFont,
    BOOL bRedraw=TRUE);

Parámetros

pFont
[in] Especifica la nueva fuente.

bRedraw
[in] Si es TRUE, se volverá a dibujar la barra de Outlook.

Comentarios

Use este método para establecer una fuente para el texto que se muestra en los botones de ficha de Outlook.

CMFCOutlookBar::SetMode2003

Especifica si el comportamiento de la barra de Outlook imita al de Outlook 2003.

void SetMode2003(BOOL bMode2003=TRUE);

Parámetros

bMode2003
[in] Si es TRUE, el modo de Office 2003 está habilitado.

Comentarios

Use esta función para habilitar o deshabilitar el modo de Office 2003. En este modo, la barra de Outlook tiene una barra de herramientas adicional con un botón de personalización. El comportamiento de la barra de Outlook se ajusta al comportamiento de la barra de Outlook en Microsoft Office 2003.

Este modo está deshabilitado de forma predeterminada.

Nota:

Se debe llamar a esta función antes de CMFCOutlookBar::Create.

Consulte también

Gráfico de jerarquías
Clases
CBaseTabbedPane (clase)
CMFCOutlookBarTabCtrl (clase)
CMFCOutlookBarPane (clase)