Compartilhar via


Classe CMFCOutlookBar

Um painel com guias com a aparência visual do Painel de Navegação no Microsoft Outlook 2000 ou no Outlook 2003. O objeto CMFCOutlookBar contém um objeto da classe CMFCOutlookBarTabCtrl e uma série de guias. As guias podem ser objetos da classe CMFCOutlookBarPane ou objetos derivados de CWnd. Para o usuário, a barra do Outlook aparece como uma série de botões e uma área de exibição. Quando o usuário clica em um botão, o controle correspondente ou o painel de botões é exibido.

Sintaxe

class CMFCOutlookBar : public CBaseTabbedPane

Membros

Construtores públicos

Nome Descrição
CMFCOutlookBar::CMFCOutlookBar Construtor padrão.
CMFCOutlookBar::~CMFCOutlookBar Destruidor.

Métodos públicos

Nome Descrição
CMFCOutlookBar::AllowDestroyEmptyTabbedPane Especifica se um painel com guias vazio pode ser destruído. (Substitui CBaseTabbedPane::AllowDestroyEmptyTabbedPane.)
CMFCOutlookBar::CanAcceptPane Determina se outro painel pode ser encaixado no painel da barra do Outlook. (Substitui CDockablePane::CanAcceptPane.)
CMFCOutlookBar::CanSetCaptionTextToTabName Determina se a legenda do painel com guias exibe o mesmo texto que a guia ativa. (Substitui CBaseTabbedPane::CanSetCaptionTextToTabName.)
CMFCOutlookBar::Create Cria o controle de barras do Outlook.
CMFCOutlookBar::CreateCustomPage Cria uma guia de barra personalizada do Outlook.
CMFCOutlookBar::CreateObject Usado pela estrutura para criar uma instância dinâmica desse tipo de classe.
CMFCOutlookBar::DoesAllowDynInsertBefore Determina se um usuário pode encaixar uma barra de controle na borda externa da barra do Outlook.
CMFCOutlookBar::FloatTab Faz com que um painel flutue, mas somente se, no momento, o painel residir em uma guia desanexável. (Substitui CBaseTabbedPane::FloatTab.)
CMFCOutlookBar::GetButtonsFont Retorna a fonte do texto nos botões da barra do Outlook.
CMFCOutlookBar::GetTabArea Retorna o tamanho e a posição das áreas de guia na barra do Outlook. (Substitui CBaseTabbedPane::GetTabArea.)
CMFCOutlookBar::GetThisClass Usado pela estrutura para obter um ponteiro para o objeto CRuntimeClass associado a esse tipo de classe.
CMFCOutlookBar::IsMode2003 Determina se o comportamento da barra do Outlook imita o do Microsoft Office Outlook 2003 (consulte os Comentários).
CMFCOutlookBar::OnAfterAnimation Chamado por CMFCOutlookBarTabCtrl::SetActiveTab após a guia ativa ter sido definida usando animação.
CMFCOutlookBar::OnBeforeAnimation Chamado por CMFCOutlookBarTabCtrl::SetActiveTab antes que uma página de guia seja definida como a guia ativa usando animação.
CMFCOutlookBar::OnScroll Chamado pela estrutura se a barra do Outlook estiver rolando para cima ou para baixo.
CMFCOutlookBar::RemoveCustomPage Remove uma guia de barra personalizada do Outlook.
CMFCOutlookBar::SetButtonsFont Define a fonte do texto nos botões da barra do Outlook.
CMFCOutlookBar::SetMode2003 Especifica se o comportamento da barra do Outlook imita o do Outlook 2003 (consulte os Comentários).

Comentários

Para ver um exemplo de barra do Outlook, consulte o Exemplo OutlookDemo: aplicativo OutlookDemo do MFC.

Implementando a barra do Outlook

Para usar o controle CMFCOutlookBar no aplicativo, siga estas etapas:

  1. Insira um objeto CMFCOutlookBar na classe de janela de quadro principal.

    class CMainFrame : public CMDIFrameWnd
    {
        // ...
        CMFCOutlookBar m_wndOutlookBar;
        CMFCOutlookBarPane m_wndOutlookPane;
        // ...
    };
    
  2. Ao processar a mensagem WM_CREATE no quadro principal, chame o método CMFCOutlookBar::Create para criar o controle de guia da barra do Outlook.

    m_wndOutlookBar.Create (_T("Shortcuts"),
        this,
        CRect (0, 0, 100, 100),
        ID_VIEW_OUTLOOKBAR,
        WS_CHILD | WS_VISIBLE | CBRS_LEFT);
    
  3. Obtenha um ponteiro para o CMFCOutlookBarTabCtrl subjacente usando CBaseTabbedPane::GetUnderlyingWindow.

    CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*) m_wndOutlookBar.GetUnderlyingWindow ();
    
  4. Crie um objeto da classe CMFCOutlookBarPane para cada guia que contém botões.

    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. Chame CMFCOutlookBarTabCtrl::AddTab para adicionar cada nova guia. Defina o parâmetro bDetachable como FALSE para tornar uma página não desanexável. Ou use CMFCOutlookBarTabCtrl::AddControl para adicionar páginas desanexáveis.

    pOutlookBar->AddTab (&m_wndOutlookPane, "General", (UINT) -1, TRUE);
    
  6. Para adicionar um controle derivado de CWnd (por exemplo, classe CMFCShellTreeCtrl) como uma guia, crie o controle e chame CMFCOutlookBarTabCtrl::AddTab para adicioná-lo à barra do Outlook.

Observação

Use IDs de controle exclusivas para cada objeto da classe CMFCOutlookBarPane e para cada objeto derivado de CWnd.

Para adicionar ou excluir páginas dinamicamente no runtime, use CMFCOutlookBar::CreateCustomPage e CMFCOutlookBar::RemoveCustomPage.

Modo do Outlook 2003

No modo do Outlook 2003, os botões de guia são posicionados na parte inferior do painel da barra do Outlook. Quando não há espaço suficiente para exibir os botões, eles são exibidos como ícones em uma área semelhante a uma barra de ferramentas ao longo da parte inferior do painel.

Use CMFCOutlookBar::SetMode2003 para habilitar o modo do Outlook 2003. Use CMFCOutlookBarTabCtrl::SetToolbarImageList para definir o bitmap que contém os ícones exibidos na parte inferior da barra do Outlook. Os ícones no bitmap precisam ser ordenados segundo índice de guias.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CBasePane

CPane

CDockablePane

CBaseTabbedPane

CMFCOutlookBar

Requisitos

Cabeçalho: afxoutlookbar.h

CMFCOutlookBar::AllowDestroyEmptyTabbedPane

Especifica se um painel com guias vazio pode ser destruído.

virtual BOOL AllowDestroyEmptyTabbedPane() const;

Valor de Devolução

TRUE se um painel com guias vazio puder ser destruído; caso contrário, FALSE. A implementação padrão sempre retorna TRUE.

Comentários

Se um painel com guias vazio não puder ser destruído, a estrutura o ocultará.

CMFCOutlookBar::CanAcceptPane

Determina se outro painel pode ser encaixado no painel da barra do Outlook.

virtual BOOL CanAcceptPane(const CBasePane* pBar) const;

Parâmetros

pBar
[in] Um ponteiro para outro painel que está sendo encaixado neste.

Valor de Devolução

TRUE se outro painel puder ser encaixado no painel da barra do Outlook; caso contrário, FALSE.

Comentários

Se a barra do Outlook estiver no modo Outlook 2003, o encaixe não terá suporte, portanto o valor retornado será FALSE.

Se o parâmetro pBar for NULL, o método retornará FALSE.

Caso contrário, o método se comportará como o método base CBasePane::CanAcceptPane, exceto pelo fato de que mesmo que o encaixe não esteja habilitado, uma barra do Outlook ainda poderá permitir que outra barra do Outlook seja encaixada sobre ela.

CMFCOutlookBar::CanSetCaptionTextToTabName

Determina se a legenda do painel com guias exibe o mesmo texto que a guia ativa.

virtual BOOL CanSetCaptionTextToTabName() const;

Valor de Devolução

TRUE se a legenda da janela da barra do Outlook for configurada automaticamente como o texto da guia ativa; caso contrário, FALSE.

Comentários

Use CBaseTabbedPane::EnableSetCaptionTextToTabName para habilitar ou desabilitar essa funcionalidade.

No modo do Outlook 2003, essa configuração sempre está habilitada.

CMFCOutlookBar::Create

Cria o controle de barras do 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 a legenda da janela.

pParentWnd
[in] Especifica um ponteiro para uma janela pai. Não pode ser NULL.

rect
[in] Especifica o tamanho e a posição da barra do Outlook em pixels.

Nid
[in] Especifica a ID do controle. Deve ser diferente de outras IDs de controle usadas no aplicativo.

dwStyle
[in] Especifica o estilo da barra de controle desejada. Para conhecer os valores possíveis, consulte Estilos de Janela.

dwControlBarStyle
[in] Especifica os estilos especiais definidos pela biblioteca.

pContext
[in] Criar contexto.

Valor de Devolução

Um valor diferente de zero, se o método tiver êxito. Caso contrário, 0.

Comentários

Um objeto CMFCOutlookBar é construído em duas etapas. Primeiro, chame o construtor, então chame Create, que cria o controle da barra do Outlook e o anexa ao objeto CMFCOutlookBar.

Consulte CBasePane::CreateEx para ver a lista de estilos definidos pela biblioteca disponíveis a serem especificados por dwControlBarStyle.

Exemplo

O exemplo a seguir demonstra como usar o método Create da classe CMFCOutlookBar. Esse snippet de código faz parte do exemplo com várias exibições do 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

Cria uma guia de barra personalizada do Outlook.

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

Parâmetros

lpszPageName
[in] O rótulo da página.

bActivatePage
[in] Se for TRUE, a página ficará ativa após a criação.

dwEnabledDocking
[in] Uma combinação de sinalizadores CBRS_ALIGN_ que especifica os lados de encaixe habilitados quando a página é desanexada.

bEnableTextLabels
[in] Se for TRUE, os rótulos de texto serão habilitados para os botões que residem na página.

Valor de Devolução

Um ponteiro para a página recém-criada ou NULL se a criação tiver falhado.

Comentários

Use esse método para permitir que os usuários criem páginas personalizadas de barras do Outlook. É possível criar até 100 páginas por aplicativo. As IDs de controle de página começam em 0xF000. A criação falhará se o número total de páginas personalizadas de barras do Outlook ultrapassar 100.

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

CMFCOutlookBar::DoesAllowDynInsertBefore

Especifica se um usuário pode encaixar um painel na borda externa da barra do Outlook.

DECLARE_MESSAGE_MAP virtual BOOL DoesAllowDynInsertBefore() const;

Valor de Devolução

A implementação padrão retorna FALSE.

Comentários

A estrutura chama o método DoesAllowDynInsertBefore quando procura um local para encaixar um painel dinâmico. Se a função retornar FALSE, a estrutura não permitirá o encaixe de nenhum painel dinâmico nas bordas externas do painel.

Normalmente, você cria uma barra do Outlook como um controle estático não flutuante. Você pode substituir a função em uma classe derivada e retornar TRUE para alterar esse comportamento.

Observação

Como os painéis dinâmicos verificam o status dos painéis estáticos encaixados ao encaixar, encaixe os painéis dinâmicos após os painéis estáticos sempre que possível.

CMFCOutlookBar::FloatTab

Faz com que um painel flutue.

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

Parâmetros

pBar
[in] Um ponteiro para o painel que deve flutuar.

nTabID
[in] O índice baseado em zero da guia que deve flutuar.

dockMethod
[in] Especifica o método a ser usado para fazer o painel flutuar. Para obter mais informações, consulte CBaseTabbedPane::FloatTab.

bHide
[in] TRUE para ocultar o painel antes de flutuar; caso contrário, FALSE. Diferente da versão da classe base desse método, o parâmetro não tem um valor padrão.

Valor de Devolução

TRUE se o painel flutuou; caso contrário, FALSE.

Comentários

Esse método é como CBaseTabbedPane::FloatTab, exceto pelo fato de que não permite que a última guia restante em um controle de barra do Outlook flutue.

CMFCOutlookBar::GetButtonsFont

Retorna a fonte do texto nas guias de botão da página da barra do Outlook.

CFont* GetButtonsFont() const;

Valor de Devolução

Um ponteiro para o objeto de fonte usado para exibir texto nas guias de botão da página da barra do Outlook.

Comentários

Use essa função para recuperar a fonte usada para exibir o texto nas guias do botão da página do Outlook. Você pode definir a fonte chamando CMFCOutlookBar::SetButtonsFont.

CMFCOutlookBar::GetTabArea

Determina o tamanho e a posição das áreas de guia na barra do Outlook.

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

Parâmetros

rectTabAreaTop
[out] Contém o tamanho e a posição (nas coordenadas de cliente) da área da guia superior quando a função é retornada.

rectTabAreaBottom
[out] Contém o tamanho e a posição (nas coordenadas de cliente) da área da guia inferior quando a função é retornada.

Comentários

A estrutura chama esse método para determinar o tipo de encaixe no painel de destino. Quando a estrutura determina que o usuário arraste o painel a ser encaixado sobre a área da guia do painel de destino, ela tenta adicionar o primeiro painel como uma nova guia do painel de destino. Caso contrário, ela tentará encaixar o primeiro painel em um lado apropriado do painel de destino. A estrutura cria um contêiner com um controle deslizante para acomodar o painel encaixado adicional.

A implementação padrão de GetTabArea retornará toda a área de cliente da barra do Outlook se a barra for estática, ou seja, se ela não puder flutuar. Caso contrário, retornará a área que os botões de página ocupam nas partes superior e inferior do controle da barra do Outlook.

Substitua esse método na classe derivada de CMFCOutlookBar para alterar esse comportamento.

CMFCOutlookBar::IsMode2003

Especifica se o comportamento da barra do Outlook imita o do Microsoft Office Outlook 2003.

BOOL IsMode2003() const;

Valor de Devolução

Diferente de zero se a barra do Outlook estiver em execução no modo do Microsoft Office 2003; caso contrário, 0.

Comentários

Habilite esse modo usando CMFCOutlookBar::SetMode2003.

CMFCOutlookBar::OnAfterAnimation

Chamado por CMFCOutlookBarTabCtrl::SetActiveTab após a guia ativa ter sido definida usando animação.

virtual void OnAfterAnimation(int nPage);

Parâmetros

nPage
[in] O índice baseado em zero da página da guia que ficou ativa.

Comentários

O efeito visual da definição da guia ativa depende de você ter habilitado a animação. Para obter mais informações, consulte CMFCOutlookBarTabCtrl::EnableAnimation.

CMFCOutlookBar::OnBeforeAnimation

Chamado por CMFCOutlookBarTabCtrl::SetActiveTab antes que uma página de guia seja definida como a guia ativa usando animação.

virtual BOOL OnBeforeAnimation(int nPage);

Parâmetros

nPage
[in] O índice baseado em zero da página da guia que está prestes a ser definida como ativa.

Valor de Devolução

Retornará TRUE se a animação for usada na configuração da nova guia ativa ou FALSE se for desabilitada.

Comentários

CMFCOutlookBar::OnScroll

Chamado pela estrutura se a barra do Outlook estiver rolando para cima ou para baixo.

virtual void OnScroll(BOOL bDown);

Parâmetros

bDown
[in] TRUE se a barra do Outlook estiver rolando para baixo ou FALSE se estiver rolando para cima.

Comentários

CMFCOutlookBar::RemoveCustomPage

Remove uma página da guia da barra personalizada do Outlook.

BOOL RemoveCustomPage(
    UINT uiPage,
    CMFCOutlookBarTabCtrl* pTargetWnd);

Parâmetros

uiPage
[in] Índice baseado em zero da página na janela pai do Outlook.

pTargetWnd
[in] Ponteiro para a janela pai do Outlook.

Valor de Devolução

Diferente de zero se a página personalizada tiver sido removida com êxito; caso contrário, 0.

Comentários

Chame essa função para excluir páginas personalizadas. Quando a página é removida, a ID de controle é retornada para o pool de IDs disponíveis.

Forneça um ponteiro para o objeto de classe CMFCOutlookBarTabCtrl no qual a página a ser removida reside. Observe que um usuário pode mover páginas desanexáveis entre diferentes barras do Outlook, mas as informações sobre uma página personalizada residem no objeto da barra do Outlook para o qual você chamou CMFCOutlookBar::CreateCustomPage.

Use CBaseTabbedPane::GetUnderlyingWindow para obter um ponteiro para a janela do Outlook.

CMFCOutlookBar::SetButtonsFont

Define a fonte do texto nos botões da barra do Outlook.

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

Parâmetros

pFont
[in] Especifica a nova fonte.

bRedraw
[in] Se TRUE, a barra do Outlook será redesenhada.

Comentários

Use esse método para definir uma fonte para o texto exibido nos botões da página da guia do Outlook.

CMFCOutlookBar::SetMode2003

Especifica se o comportamento da barra do Outlook imita o do Outlook 2003.

void SetMode2003(BOOL bMode2003=TRUE);

Parâmetros

bMode2003
[in] Se TRUE, o modo do Office 2003 será habilitado.

Comentários

Use essa função para habilitar ou desabilitar o modo do Office 2003. Nesse modo, a barra do Outlook tem uma barra de ferramentas adicional com um botão de personalização. O comportamento da barra do Outlook segue o comportamento da barra do Outlook no Microsoft Office 2003.

Por padrão, esse modo fica desabilitado.

Observação

Essa função deve ser chamada antes de CMFCOutlookBar::Create.

Confira também

Gráfico da hierarquia
Classes
Classe CBaseTabbedPane
Classe CMFCOutlookBarTabCtrl
Classe CMFCOutlookBarPane