Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
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
CReBarobjeto, seja desenhado para qualquerCControlBarclasse 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