Compartilhar via


Classe CControlBar

A classe base para as classes de barra de controle CStatusBar, CToolBar, CDialogBar, CReBar e COleResizeBar.

Sintaxe

class CControlBar : public CWnd

Membros

Construtores Protegidos

Nome Descrição
CControlBar::CControlBar Constrói um objeto CControlBar.

Métodos públicos

Nome Descrição
CControlBar::CalcDynamicLayout Retorna o tamanho de uma barra de controle dinâmico como um objeto CSize.
CControlBar::CalcFixedLayout Retorna o tamanho de uma barra de controle como um objeto CSize.
CControlBar::CalcInsideRect Retorna as dimensões atuais da área da barra de controle; incluindo as bordas.
CControlBar::DoPaint Renderiza as bordas e a garra da barra de controle.
CControlBar::DrawBorders Renderiza as bordas da barra de controle.
CControlBar::DrawGripper Renderiza a garra da barra de controle.
CControlBar::EnableDocking Permite que uma barra de controle seja encaixada ou flutuante.
CControlBar::GetBarStyle Recupera as configurações de estilo da barra de controle.
CControlBar::GetBorders Recupera os valores de borda da barra de controle.
CControlBar::GetCount Retorna o número de elementos não HWND na barra de controle.
CControlBar::GetDockingFrame Retorna um ponteiro para o quadro ao qual uma barra de controle está encaixada.
CControlBar::IsFloating Retorna um valor diferente de zero se a barra de controle em questão for uma barra de controle flutuante.
CControlBar::OnUpdateCmdUI Chama os manipuladores de interface do usuário de comando.
CControlBar::SetBarStyle Modifica as configurações de estilo da barra de controle.
CControlBar::SetBorders Define os valores de borda da barra de controle.
CControlBar::SetInPlaceOwner Altera o proprietário local de uma barra de controle.

Membros de Dados Públicos

Nome Descrição
CControlBar::m_bAutoDelete Se for diferente de zero, o objeto CControlBar será excluído quando a barra de controle do Windows for destruída.
CControlBar::m_pInPlaceOwner O proprietário local da barra de controle.

Comentários

Uma barra de controle é uma janela geralmente alinhada à esquerda ou à direita de uma janela de quadro. Ele pode conter itens filho que são controles baseados em HWND, que são janelas que geram e respondem a mensagens do Windows ou itens não baseados em HWND, que não são windows e são gerenciados pelo código do aplicativo ou código da estrutura. Caixas de listagem e controles de edição são exemplos de controles baseados em HWND; Painéis de barras de status e botões de bitmap são exemplos de controles não baseados em HWND.

As janelas da barra de controle geralmente são janelas filho de uma janela de quadro pai e geralmente são irmãos do cliente ou do cliente MDI da janela de quadro. Um objeto CControlBar usa informações sobre o retângulo do cliente da janela pai para se posicionar. Em seguida, ele informa a janela pai sobre quanto espaço permanece não alocado na área do cliente da janela pai.

Para obter mais informações sobre CControlBar, consulte:

Hierarquia de herança

CObject

CCmdTarget

CWnd

CControlBar

Requisitos

Cabeçalho: afxext.h

CControlBar::CalcDynamicLayout

A estrutura chama essa função membro para calcular as dimensões de uma barra de ferramentas dinâmica.

virtual CSize CalcDynamicLayout(
    int nLength,
    DWORD nMode);

Parâmetros

nLength
A dimensão solicitada da barra de controle, horizontal ou vertical, dependendo do dwMode.

nMode
Os sinalizadores predefinidos a seguir são usados para determinar a altura e a largura da barra de controle dinâmico. Use o operador OR (|) bit a bit para combinar os sinalizadores.

Sinalizadores do modo layout O que significa
LM_STRETCH Indica se a barra de controle deve ser alongada até atingir o tamanho do quadro. Defina se a barra não for uma barra de encaixe (não disponível para encaixe). Não definido quando a barra está encaixada ou flutuante (disponível para encaixe). Se definido, LM_STRETCH ignorará nLength e retornará dimensões com base no estado LM_HORZ. LM_STRETCH funciona de forma semelhante ao parâmetro bStretch usado em CalcFixedLayout; consulte essa função de membro para obter mais informações sobre a relação entre alongamento e orientação.
LM_HORZ Indica se a orientação da barra é horizontal ou vertical. Defina se a orientação da barra é horizontal e, se for vertical, ela não será definida. LM_HORZ funciona de forma semelhante ao parâmetro bHorz usado em CalcFixedLayout; consulte essa função de membro para obter mais informações sobre a relação entre alongamento e orientação.
LM_MRUWIDTH Largura dinâmica usada mais recentemente. Ignora o parâmetro nLength e usa a largura usada mais recentemente lembrada.
LM_HORZDOCK Dimensões horizontais encaixadas. Ignora o parâmetro nLength e retorna o tamanho dinâmico com a maior largura.
LM_VERTDOCK Dimensões vertical encaixadas. Ignora o parâmetro nLength e retorna o tamanho dinâmico com a maior altura.
LM_LENGTHY Defina se nLength indica altura (direção Y) em vez de largura.
LM_COMMIT Redefine LM_MRUWIDTH para a largura atual da barra de controle flutuante.

Valor de Devolução

O tamanho da barra de controle, em pixels, de um objeto CSize.

Comentários

Substitua essa função de membro para fornecer seu próprio layout dinâmico nas classes que você deriva de CControlBar. Classes MFC derivadas de CControlBar, como CToolbar, substituem essa função de membro e fornecem sua própria implementação.

CControlBar::CalcFixedLayout

Chame essa função de membro para calcular o tamanho horizontal de uma barra de controle.

virtual CSize CalcFixedLayout(
    BOOL bStretch,
    BOOL bHorz);

Parâmetros

bStretch
Indica se a barra deve ser alongada até atingir o tamanho do quadro. O parâmetro bStretch é diferente de zero quando a barra não é de encaixe (não disponível para encaixe) e é igual a 0 quando está encaixada ou flutuando (disponível para encaixe).

bHorz
Indica se a orientação da barra é horizontal ou vertical. O parâmetro bHorz é diferente de zero quando a barra está orientada horizontalmente e é igual a 0 quando ela está orientada verticalmente.

Valor de Devolução

O tamanho da barra de controle, em pixels, de um objeto CSize.

Comentários

Barras de controle, como barras de ferramentas, podem se estender horizontal ou verticalmente para acomodar os botões contidos na barra de controle.

Se bStretch for TRUE, estique a dimensão ao longo da orientação fornecida pelo bHorz. Em outras palavras, se bHorz for FALSE, a barra de controle será estendida verticalmente. Se bStretch for FALSE, nenhum alongamento ocorrerá. A tabela a seguir mostra as possíveis permutações e os estilos de barra de controle resultantes de bStretch e bHorz.

bStretch bHorz Alongamento Orientação Encaixe/Não encaixe
TRUE TRUE Alongamento horizontal Orientado horizontalmente Não encaixe
TRUE FALSE Alongamento vertical Orientação vertical Não encaixe
FALSE TRUE Nenhum alongamento disponível Orientado horizontalmente Encaixe
FALSE FALSE Nenhum alongamento disponível Orientação vertical Encaixe

CControlBar::CalcInsideRect

A estrutura chama essa função para calcular a área do cliente da barra de controle.

virtual void CalcInsideRect(
    CRect& rect,
    BOOL bHorz) const;

Parâmetros

rect
Contém as dimensões atuais da barra de controle; incluindo as bordas.

bHorz
Indica se a orientação da barra é horizontal ou vertical. O parâmetro bHorz é diferente de zero quando a barra está orientada horizontalmente e é igual a 0 quando ela está orientada verticalmente.

Comentários

Essa função é chamada antes de a barra de controle ser pintada.

Substitua essa função para personalizar a renderização das bordas e da barra de pinça da barra de controle.

CControlBar::CControlBar

Constrói um objeto CControlBar.

CControlBar();

CControlBar::DoPaint

Chamado pela estrutura para renderizar as bordas e a barra de pinça da barra de controle.

virtual void DoPaint(CDC* pDC);

Parâmetros

pDC
Aponta para o contexto do dispositivo a ser usado para renderizar as bordas e o pinçamento da barra de controle.

Comentários

Substitua essa função para personalizar o comportamento de desenho da barra de controle.

Outro método de personalização é substituir as funções DrawBorders e DrawGripper, e adicionar código de desenho personalizado para as bordas e o gripper. Como esses métodos são chamados pelo método padrão DoPaint, uma substituição de DoPaint não é necessária.

CControlBar::DrawBorders

Chamado pela estrutura para renderizar as bordas da barra de controle.

virtual void DrawBorders(
    CDC* pDC,
    CRect& rect);

Parâmetros

pDC
Aponta para o contexto do dispositivo a ser usado para renderizar as bordas da barra de controle.

rect
Um objeto CRect que contém as dimensões da barra de controle.

Comentários

Substitua essa função para personalizar a aparência das bordas da barra de controle.

CControlBar::DrawGripper

Chamada pela estrutura para renderizar as garras da barra de controle.

virtual void DrawGripper(
    CDC* pDC,
    const CRect& rect);

Parâmetros

pDC
Aponta para o contexto do dispositivo a ser usado para renderizar a garra da barra de controle.

rect
Um objeto CRect que contém as dimensões da garra da barra de controle.

Comentários

Substitua essa função para personalizar a aparência da garra da barra de controle.

CControlBar::EnableDocking

Chame essa função para habilitar uma barra de controle a ser encaixada.

void EnableDocking(DWORD dwDockStyle);

Parâmetros

dwDockStyle
Especifica se a barra de controle dá suporte ao encaixe e aos lados da janela pai à qual a barra de controle pode ser encaixada, se houver suporte. Pode ser um ou mais dos seguintes:

  • CBRS_ALIGN_TOP Permite o encaixe na parte superior da área do cliente.

  • CBRS_ALIGN_BOTTOM Permite o encaixe na parte inferior da área do cliente.

  • CBRS_ALIGN_LEFT Permite o encaixe no lado esquerdo da área do cliente.

  • CBRS_ALIGN_RIGHT Permite o encaixe no lado direito da área do cliente.

  • CBRS_ALIGN_ANY Permite o encaixe em qualquer lado da área do cliente.

  • CBRS_FLOAT_MULTI Permite que várias barras de controle sejam flutuadas em uma única janela de minifilme.

Se for 0 (ou seja, indicar nenhum sinalizador), a barra de controle não encaixará.

Comentários

Os lados especificados devem corresponder a um dos lados habilitados para encaixe na janela de quadro de destino ou a barra de controle não pode ser encaixada nessa janela de quadro.

CControlBar::GetBarStyle

Chame essa função para determinar quais configurações de CBRS_ (estilos de barra de controle) estão definidas atualmente para a barra de controle.

DWORD GetBarStyle();

Valor de Devolução

As configurações atuais de CBRS_ (estilos de barra de controle) para a barra de controle. Consulte CControlBar::SetBarStyle para obter a lista completa de estilos disponíveis.

Comentários

Não manipula estilos WS_ (estilo de janela).

CControlBar::GetBorders

Retorna os valores de borda atuais para a barra de controle.

CRect GetBorders() const;

Valor de Devolução

Um objeto CRect que contém a largura atual (em pixels) de cada lado do objeto da barra de controle. Por exemplo, o valor do membro left, do objeto CRect, é a largura da borda esquerda.

CControlBar::GetCount

Retorna o número de itens não HWND no objeto CControlBar.

int GetCount() const;

Valor de Devolução

O número de itens não HWND no objeto CControlBar. Essa função retorna 0 para um objeto CDialogBar.

Comentários

O tipo do item depende do objeto derivado: painéis para objetos CStatusBar e botões e separadores para objetos CToolBar.

CControlBar::GetDockingFrame

Chame essa função de membro para obter um ponteiro para a janela de quadro atual à qual a barra de controle está encaixada.

CFrameWnd* GetDockingFrame() const;

Valor de Devolução

Um ponteiro para uma janela de quadro se tiver êxito; caso contrário, NULL.

Se a barra de controle não estiver encaixada em uma janela de quadro (ou seja, se a barra de controle estiver flutuante), essa função retornará um ponteiro para seu CMiniFrameWnd pai.

Comentários

Para obter mais informações sobre barras de controle encaixadas, consulte CControlBar::EnableDocking e CFrameWnd::D ockControlBar.

CControlBar::IsFloating

Chame essa função de membro para determinar se a barra de controle está flutuante ou encaixada.

BOOL IsFloating() const;

Valor de Devolução

Diferente de zero se a barra de controle estiver flutuando; caso contrário, 0.

Comentários

Para alterar o estado de uma barra de controle de encaixada para flutuante, chame CFrameWnd::FloatControlBar.

CControlBar::m_bAutoDelete

Se for diferente de zero, o objeto CControlBar será excluído quando a barra de controle do Windows for destruída.

BOOL m_bAutoDelete;

Comentários

m_bAutoDelete é uma variável pública do tipo BOOL.

Um objeto de barra de controle geralmente é inserido em um objeto de janela de quadro. Nesse caso, m_bAutoDelete é 0 porque o objeto de barra de controle inserido é destruído quando a janela do quadro é destruída.

Defina essa variável como um valor não zero se você alocar um objeto CControlBar no heap e não planeja chamar delete.

CControlBar::m_pInPlaceOwner

O proprietário local da barra de controle.

CWnd* m_pInPlaceOwner;

CControlBar::OnUpdateCmdUI

Essa função de membro é chamada pela estrutura para atualizar o status da barra de ferramentas ou da barra de status.

virtual void OnUpdateCmdUI(
    CFrameWnd* pTarget,
    BOOL bDisableIfNoHndler) = 0;

Parâmetros

pTarget
Aponta para a janela de quadro principal do aplicativo. Esse ponteiro é usado para roteamento de mensagens de atualização.

bDisableIfNoHndler
Sinalizador que indica se um controle que não tem nenhum manipulador de atualização deve ser exibido automaticamente como desabilitado.

Comentários

Para atualizar um botão ou painel individual, use a macro ON_UPDATE_COMMAND_UI no mapa da mensagem para definir um manipulador de atualização adequadamente. Consulte ON_UPDATE_COMMAND_UI para obter mais informações sobre como usar essa macro.

OnUpdateCmdUI é chamado pela estrutura quando o aplicativo está ocioso. A janela de quadro a ser atualizada deve ser uma janela filho, pelo menos indiretamente, de uma janela de quadro visível. OnUpdateCmdUI é uma substituição avançada.

CControlBar::SetBarStyle

Chame essa função para definir os estilos CBRS_ desejados para a barra de controle.

void SetBarStyle(DWORD dwStyle);

Parâmetros

dwStyle
Os estilos desejados para a barra de controle. Pode ser um ou mais dos seguintes:

  • CBRS_ALIGN_TOP Permite que a barra de controle seja encaixada na parte superior da área do cliente de uma janela de quadro.

  • CBRS_ALIGN_BOTTOM Permite que a barra de controle seja encaixada na parte inferior da área do cliente de uma janela de quadro.

  • CBRS_ALIGN_LEFT Permite que a barra de controle seja encaixada na parte esquerda da área do cliente de uma janela de quadro.

  • CBRS_ALIGN_RIGHT Permite que a barra de controle seja encaixada na parte direita da área do cliente de uma janela de quadro.

  • CBRS_ALIGN_ANY Permite que a barra de controle seja encaixada em qualquer parte da área do cliente de uma janela de quadro.

  • CBRS_BORDER_TOP Faz com que uma borda seja desenhada na borda superior da barra de controle quando ela estaria visível.

  • CBRS_BORDER_BOTTOM Faz com que uma borda seja desenhada na borda inferior da barra de controle quando ela estaria visível.

  • CBRS_BORDER_LEFT Faz com que uma borda seja desenhada na borda esquerda da barra de controle quando ela estaria visível.

  • CBRS_BORDER_RIGHT Faz com que uma borda seja desenhada na borda direita da barra de controle quando ela estaria visível.

  • CBRS_FLOAT_MULTI Permite que várias barras de controle sejam flutuadas em uma única janela de minifilme.

  • CBRS_TOOLTIPS Faz com que as dicas de ferramenta sejam exibidas para a barra de controle.

  • CBRS_FLYBY Faz com que o texto da mensagem seja atualizado ao mesmo tempo que dicas de ferramenta.

  • CBRS_GRIPPER Faz com que uma garra, semelhante à usada em bandas em um objeto CReBar, seja desenhada para qualquer classe derivada de CControlBar.

Comentários

Não afeta as configurações WS_ (estilo de janela).

CControlBar::SetBorders

Chame essa função para definir o tamanho das bordas da barra de controle.

void SetBorders(
    int cxLeft = 0,
    int cyTop = 0,
    int cxRight = 0,
    int cyBottom = 0);

void SetBorders(LPCRECT lpRect);

Parâmetros

cxLeft
A largura (em pixels) da borda esquerda da barra de controle.

cyTop
A altura (em pixels) da borda superior da barra de controle.

cxRight
A largura (em pixels) da borda direita da barra de controle.

cyBottom
A altura (em pixels) da borda inferior da barra de controle.

lpRect
Um ponteiro para um objeto CRect que contém a largura atual (em pixels) de cada borda do objeto da barra de controle.

Exemplo

O exemplo de código a seguir define as bordas superior e inferior da barra de controle como 5 pixels e as bordas esquerda e direita como 2 pixels:

CControlBar &m_myControlBar = m_Rebar;
m_myControlBar.SetBorders(2, 5, 2, 5);

CControlBar::SetInPlaceOwner

Altera o proprietário local de uma barra de controle.

void SetInPlaceOwner(CWnd* pWnd);

Parâmetros

pWnd
Um ponteiro para um objeto CWnd.

Comentários

Confira também

CTRLBARS de exemplo do MFC
Classe CWnd
Gráfico da hierarquia
Classe CToolBar
Classe CDialogBar
Classe CStatusBar
Classe CReBar