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
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 retorno
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 retorno
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 retorno
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 retorno
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 retorno
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 retorno
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 retorno
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 deCControlBar
.
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