Partilhar via


Classe CControlBar

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

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

Sintaxe

class CControlBar : public CWnd

Membros

Construtores Protegidos

Nome Description
CControlBar::CControlBar Constrói um CControlBar objeto.

Métodos Públicos

Nome Description
CControlBar::CalcDynamicLayout Devolve o tamanho de uma barra de controlo dinâmica como objeto CSize .
CControlBar::CalcFixedLayout Devolve o tamanho da barra de controlo como um objeto CSize .
CControlBar::CalcInsideRect Devolve as dimensões atuais da área da barra de controlo; incluindo as fronteiras.
CControlBar::D oPaint Renderiza as bordas e o gripper da barra de controlo.
CControlBar::D rawBorders Renderiza as fronteiras da barra de controlo.
CControlBar::D rawGripper Renderiza a garra da barra de controlo.
CControlBar::EnableDocking Permite que uma barra de controlo seja acoplada ou flutuante.
CControlBar::GetBarStyle Recupera as definições do estilo da barra de controlo.
CControlBar::GetBorders Recupera os valores de fronteira da barra de controlo.
CControlBar::GetCount Devolve o número de elementos não-HWND na barra de controlo.
CControlBar::GetDockingFrame Devolve um ponteiro para o frame onde uma barra de controlo está acoplada.
CControlBar::IsFloating Devolve um valor diferente de zero se a barra de controlo em questão for uma barra de controlo flutuante.
CControlBar::OnUpdateCmdUI Chama os handlers da interface de comandos.
CControlBar::SetBarStyle Modifica as definições do estilo da barra de controlo.
CControlBar::SetBorders Define os valores de fronteira da barra de controlo.
CControlBar::SetInPlaceOwner Altera o proprietário de uma barra de controlo no local.

Membros de Dados Públicos

Nome Description
CControlBar::m_bAutoDelete Se não ser zero, o CControlBar objeto é eliminado quando a barra de controlo do Windows é destruída.
CControlBar::m_pInPlaceOwner O dono no local da barra de controlo.

Observações

Uma barra de controlo é uma janela que normalmente está alinhada à esquerda ou direita de uma janela de moldura. Pode conter itens filhos que são controlos 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 janelas e são geridos por código de aplicação ou código de framework. Caixas de lista e controlos de edição são exemplos de controlos baseados em HWND; painéis de barra de estado e botões bitmap são exemplos de controlos não baseados em HWND.

As janelas de barra de controlo são geralmente janelas filhos de uma janela de enquadramento pai e são geralmente irmãs da vista cliente ou cliente MDI da janela de enquadramento. Um CControlBar objeto utiliza informação sobre o retângulo cliente da janela mãe para se posicionar. De seguida, informa a janela mãe sobre quanto espaço permanece por alocar na área cliente da janela-mãe.

Para mais informações sobre CControlBar, veja:

Hierarquia de herança

CObject

CCmdTarget

CWnd

CControlBar

Requerimentos

Cabeçalho: afxext.h

CControlBar::CalcDynamicLayout

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

virtual CSize CalcDynamicLayout(
    int nLength,
    DWORD nMode);

Parâmetros

nComprimento
A dimensão solicitada da barra de controlo, seja horizontal ou vertical, dependendo do dwMode.

nMode
As seguintes bandeiras pré-definidas são usadas para determinar a altura e largura da barra de controlo dinâmica. Use o operador bitwise-OR (|) para combinar as flags.

Flags de modo de layout O que significa
LM_STRETCH Indica se a barra de controlo deve ser esticada ao tamanho da estrutura. Define se a barra não for uma barra de acoplamento (não disponível para acoplamento). Não está definido quando a barra está acoplada ou flutuante (disponível para acoplamento). Se definido, LM_STRETCH ignora nComprimento e devolve dimensões com base no estado LM_HORZ. LM_STRETCH funciona de forma semelhante ao parâmetro bStretch usado no CalcFixedLayout; consulte essa função de membro para mais informações sobre a relação entre alongamento e orientação.
LM_HORZ Indica que a barra está orientada horizontal ou verticalmente. Definido se a barra estiver orientada horizontalmente, e se estiver orientada verticalmente, não está definida. LM_HORZ funciona de forma semelhante ao parâmetro bHorz usado no CalcFixedLayout; consulte essa função de membro para mais informações sobre a relação entre alongamento e orientação.
LM_MRUWIDTH Mais recentemente, utilizou largura dinâmica. Ignora o parâmetro nLength e usa a largura mais recentemente usada lembrada.
LM_HORZDOCK Dimensões Acopladas Horizontais. Ignora o parâmetro nLength e devolve o tamanho dinâmico com a maior largura.
LM_VERTDOCK Dimensões Acopladas Verticais. Ignora o parâmetro nLength e devolve o tamanho dinâmico com a maior altura.
LM_LENGTHY Definir se nComprimento indicar altura (direção Y) em vez de largura.
LM_COMMIT Reinicia LM_MRUWIDTH para a largura atual da barra de controlo flutuante.

Valor de retorno

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

Observações

Sobrescrita esta função de membro para fornecer o teu próprio layout dinâmico nas classes que CControlBarderivas de . As classes MFC derivadas de CControlBar, como CToolbar, sobrepõem esta função membro e fornecem a sua própria implementação.

CControlBar::CalcFixedLayout

Chame esta função membro para calcular o tamanho horizontal de uma barra de controlo.

virtual CSize CalcFixedLayout(
    BOOL bStretch,
    BOOL bHorz);

Parâmetros

bStretch
Indica se a barra deve ser esticada ao tamanho da estrutura. O parâmetro bStretch é diferente de zero quando a barra não é uma barra de acoplamento (não disponível para acoplamento) e é 0 quando está acoplada ou flutuante (disponível para acoplamento).

bHorz
Indica que a barra está orientada horizontal ou verticalmente. O parâmetro bHorz é diferente de zero se a barra estiver orientada horizontalmente e é 0 se estiver orientada verticalmente.

Valor de retorno

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

Observações

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

Se o bStretch for VERDADEIRO, estique a dimensão ao longo da orientação fornecida por bHorz. Por outras palavras, se bHorz for FALSO, a barra de controlo é esticada verticalmente. Se o bStretch for FALSO, não ocorre nenhum stretch. A tabela seguinte mostra as possíveis permutações, e os estilos resultantes de barra de controlo, de bStretch e bHorz.

bStretch bHorz Alongamento Orientação Acoplamento/Não acoplamento
TRUE TRUE Alongamento horizontal Orientação horizontal Não a acoplar
TRUE Falso Alongamento vertical Orientado verticalmente Não a acoplar
Falso TRUE Não há alongamentos disponíveis Orientação horizontal Atracação
Falso Falso Não há alongamentos disponíveis Orientado verticalmente Atracação

CControlBar::CalcInsideRect

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

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

Parâmetros

retângulo
Contém as dimensões atuais da barra de controlo; incluindo as fronteiras.

bHorz
Indica que a barra está orientada horizontal ou verticalmente. O parâmetro bHorz é diferente de zero se a barra estiver orientada horizontalmente e é 0 se estiver orientada verticalmente.

Observações

Esta função é chamada antes de a barra de controlo ser pintada.

Substitua esta função para personalizar a renderização das bordas e da barra de garra da barra de controlo.

CControlBar::CControlBar

Constrói um CControlBar objeto.

CControlBar();

CControlBar::D oPaint

Chamado pela estrutura para renderizar as bordas e a barra de garra da barra de controlo.

virtual void DoPaint(CDC* pDC);

Parâmetros

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

Observações

Substitua esta função para personalizar o comportamento de desenho da barra de controlo.

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

CControlBar::D rawBorders

Chamado pelo framework para renderizar as fronteiras da barra de controlo.

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 controlo.

retângulo
Um CRect objeto contendo as dimensões da barra de controlo.

Observações

Anule esta função para personalizar a aparência das bordas da barra de controlo.

CControlBar::D rawGripper

Chamado pela estrutura para renderizar o gripper da barra de controlo.

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

Parâmetros

pDC
Aponta para o contexto do dispositivo a ser usado para renderizar a pinça da barra de controlo.

retângulo
Um CRect objeto contendo as dimensões da garra da barra de controlo.

Observações

Anule esta função para personalizar a aparência do agarrador da barra de controlo.

CControlBar::EnableDocking

Chame esta função para permitir que uma barra de controlo seja acoplada.

void EnableDocking(DWORD dwDockStyle);

Parâmetros

dwDockStyle
Especifica se a barra de controlo suporta acoplamento e os lados da janela-mãe onde a barra de controlo pode ser acoplada, se suportado. Pode ser um ou mais dos seguintes:

  • CBRS_ALIGN_TOP Permite acoplamento no topo da área do cliente.

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

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

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

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

  • CBRS_FLOAT_MULTI Permite que múltiplas barras de controlo flutuem numa única janela de mini-frame.

Se for 0 (ou seja, indicar que não há bandeiras), a barra de controlo não acopla.

Observações

Os lados especificados devem corresponder a um dos lados habilitados para acoplamento na janela de referência do frame, caso contrário a barra de controlo não pode ser acoplada a essa janela do frame.

CControlBar::GetBarStyle

Chame esta função para determinar quais as definições de CBRS_ (estilos de barra de controlo) que estão atualmente definidas para a barra de controlo.

DWORD GetBarStyle();

Valor de retorno

O CBRS_ atual (estilos de barra de controlo) para a barra de controlo. Consulte CControlBar::SetBarStyle para a lista completa de estilos disponíveis.

Observações

Não lida com estilos WS_ (estilo janela).

CControlBar::GetBorders

Devolve os valores atuais da fronteira da barra de controlo.

CRect GetBorders() const;

Valor de retorno

Um CRect objeto que contém a largura atual (em píxeis) de cada lado do objeto da barra de controlo. Por exemplo, o valor do elemento esquerdo , do objeto CRect , é a largura da borda esquerda.

CControlBar::GetCount

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

int GetCount() const;

Valor de retorno

O número de itens não-HWND no CControlBar objeto. Esta função devolve 0 para um objeto CDialogBar .

Observações

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

CControlBar::GetDockingFrame

Chame esta função membro para obter um ponteiro para a janela de frame atual à qual a sua barra de controlo está acoplada.

CFrameWnd* GetDockingFrame() const;

Valor de retorno

Um apontador para uma janela de frame, se bem-sucedido; caso contrário, NULL.

Se a barra de controlo não estiver acoplada a uma janela de frame (isto é, se a barra de controlo for flutuante), esta função devolverá um ponteiro para o seu pai CMiniFrameWnd.

Observações

Para mais informações sobre barras de controlo acopláveis, consulte CControlBar::EnableDocking e CFrameWnd::D ockControlBar.

CControlBar::IsFloating

Chame esta função membro para determinar se a barra de controlo está flutuante ou acoplada.

BOOL IsFloating() const;

Valor de retorno

Não nulo se a barra de controlo estiver flutuante; caso contrário, 0.

Observações

Para alterar o estado de uma barra de controlo de acoplada para flutuante, ligue para CFrameWnd::FloatControlBar.

CControlBar::m_bAutoDelete

Se não ser zero, o CControlBar objeto é eliminado quando a barra de controlo do Windows é destruída.

BOOL m_bAutoDelete;

Observações

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

Um objeto de barra de controlo é normalmente embutido num objeto janela de frame. Neste caso, m_bAutoDelete é 0 porque o objeto da barra de controlo embutida é destruído quando a janela do frame é destruída.

Defina esta variável para um valor diferente de zero se alocar um CControlBar objeto no heap e não planear chamar delete.

CControlBar::m_pInPlaceOwner

O dono no local da barra de controlo.

CWnd* m_pInPlaceOwner;

CControlBar::OnUpdateCmdUI

Esta função membro é chamada pelo framework para atualizar o estado da barra de ferramentas ou da barra de estado.

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

Parâmetros

pTarget
Aponta para a janela principal da aplicação. Este ponteiro é usado para encaminhar mensagens de atualização.

bDisableSeNoHndler
Flag que indica se um controlo sem gestor de atualizações deve ser automaticamente exibido como desativado.

Observações

Para atualizar um botão ou painel individual, use a macro ON_UPDATE_COMMAND_UI no seu mapa de mensagens para definir um gestor de atualizações adequadamente. Veja ON_UPDATE_COMMAND_UI para mais informações sobre o uso desta macro.

OnUpdateCmdUI é chamada pelo framework quando a aplicação está inativa. A janela de moldura a atualizar deve ser uma janela filha, pelo menos indiretamente, de uma janela de moldura visível. OnUpdateCmdUI é uma versão avançada que pode ser anulada.

CControlBar::SetBarStyle

Chame esta função para definir os estilos de CBRS_ desejados para a barra de controlo.

void SetBarStyle(DWORD dwStyle);

Parâmetros

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

  • CBRS_ALIGN_TOP Permite que a barra de controlo seja acoplada ao topo da área do cliente de uma janela de moldura.

  • CBRS_ALIGN_BOTTOM Permite que a barra de controlo seja acoplada ao fundo da área do cliente de uma janela de moldura.

  • CBRS_ALIGN_LEFT Permite que a barra de controlo seja acoplada ao lado esquerdo da área do cliente de uma janela de frame.

  • CBRS_ALIGN_RIGHT Permite que a barra de controlo seja acoplada ao lado direito da área do cliente de uma janela de frame.

  • CBRS_ALIGN_ANY Permite que a barra de controlo seja acoplada a qualquer lado da área do cliente de uma janela de frame.

  • CBRS_BORDER_TOP Faz com que uma borda seja desenhada na borda superior da barra de controlo quando seria visível.

  • CBRS_BORDER_BOTTOM Faz com que uma borda seja desenhada na borda inferior da barra de controlo quando seria visível.

  • CBRS_BORDER_LEFT Faz com que uma borda seja desenhada na borda esquerda da barra de controlo quando seria visível.

  • CBRS_BORDER_RIGHT Faz com que uma borda seja desenhada na extremidade direita da barra de controlo quando seria visível.

  • CBRS_FLOAT_MULTI Permite que múltiplas barras de controlo flutuem numa única janela de mini-frame.

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

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

  • CBRS_GRIPPER Faz com que um agarrador, semelhante ao usado nas bandas de um CReBar objeto, seja desenhado para qualquer CControlBarclasse derivada de .

Observações

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

CControlBar::SetBorders

Chame esta função para definir o tamanho das bordas da barra de controlo.

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 controlo.

cyTop
A altura (em píxeis) da borda superior da barra de controlo.

cxRight
A largura (em píxeis) da borda direita da barra de controlo.

cyBottom
A altura (em píxeis) da borda inferior da barra de controlo.

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

Example

O exemplo de código seguinte define as bordas superior e inferior da barra de controlo para 5 pixels, e as bordas esquerda e direita para 2 píxeis:

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

CControlBar::SetInPlaceOwner

Altera o proprietário de uma barra de controlo no local.

void SetInPlaceOwner(CWnd* pWnd);

Parâmetros

pWnd
Um ponteiro para um CWnd objeto.

Observações

Consulte também

Exemplos MFC CTRLBARS
Classe CWnd
Gráfico de Hierarquia
Classe CToolBar
Classe CDialogBar
Classe CStatusBar
Classe CReBar