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 CSplitButton classe representa um controlo de botões divididos. O controlo de botões divididos executa um comportamento padrão quando o utilizador clica na parte principal do botão, e exibe um menu suspenso quando o utilizador clica na seta suspensa do botão.
Sintaxe
class CSplitButton : public CButton
Membros
Construtores Públicos
| Nome | Description |
|---|---|
| CSplitButton::CSplitButton | Constrói um CSplitButton objeto. |
Métodos Públicos
| Nome | Description |
|---|---|
| CSplitButton::Create | Cria um controlo de botão dividido com estilos especificados e liga-o ao objeto atual CSplitButton . |
| CSplitButton::SetDropDownMenu | Define o menu suspenso que é mostrado quando o utilizador clica na seta suspensa do botão de divisão atual. |
Métodos Protegidos
| Nome | Description |
|---|---|
| CSplitButton::OnDropDown | Trata da notificação BCN_DROPDOWN que o sistema envia quando o utilizador clica na seta suspensa do botão de divisão atual. |
Observações
A CSplitButton classe deriva da classe CButton . O controlo de botões divididos é um controlo de botão cujo estilo é BS_SPLITBUTTON. Apresenta um menu personalizado quando o utilizador clica na seta suspensa. Para mais informações, consulte os estilos BS_SPLITBUTTON e BS_DEFSPLITBUTTON em Estilos de Botão.
A figura seguinte mostra uma caixa de diálogo que contém um controlo de pager e um (1) controlo de botão dividido. A seta (2) suspensa já foi clicada e o submenu (3) está exibido.
Hierarquia de herança
CSplitButton
Requerimentos
Cabeçalho: afxcmn.h
Esta classe é suportada no Windows Vista e versões posteriores.
Requisitos adicionais para esta classe são descritos em Requisitos de Construção para Controlos Comuns do Windows Vista.
CSplitButton::Create
Cria um controlo de botão dividido com estilos especificados e liga-o ao objeto atual CSplitButton .
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parâmetros
dwStyle
[dentro] Uma combinação bit a bit (OR) de estilos a aplicar ao controlo. Para mais informações, consulte Estilos de Botões.
retângulo
[dentro] Uma referência a uma estrutura RECT que contém a posição e o tamanho do controlo.
pParentWnd
[dentro] Um ponteiro não nulo para um objeto CWnd que é a janela pai do controlo.
nID
[dentro] O ID do controlo.
Valor de retorno
TRUE se este método for bem-sucedido; caso contrário, FALSO.
CSplitButton::CSplitButton
Constrói um CSplitButton objeto. Os parâmetros do construtor especificam um submenu que é exibido quando o utilizador clica na seta suspensa do controlo do botão dividido.
CSplitButton();
CSplitButton(
UINT nMenuId,
UINT nSubMenuId)
CSplitButton(CMenu* pMenu)
Parâmetros
nMenuId
[dentro] O ID do recurso da barra de menus.
nSubMenuId
[dentro] O ID de recurso de um submenu.
pMenu
[dentro] Um apontador para um objeto CMenu que especifica um submenu. O CSplitButton objeto elimina o CMenu objeto e o seu HMENU associado quando este CSplitButton sai do âmbito.
Observações
Use o método CSplitButton::Create para criar um controlo de botão dividido e anexá-lo ao CSplitButton objeto.
CSplitButton::OnDropDown
Trata da notificação BCN_DROPDOWN que o sistema envia quando o utilizador clica na seta suspensa do botão de divisão atual.
afx_msg void OnDropDown(
NMHDR* pNMHDR,
LRESULT* pResult);
Parâmetros
pNMHDR
[dentro] Apontador para uma estrutura NMHDR que contém informação sobre a notificação BCN_DROPDOWN .
pResultado
[fora] (Não utilizado; nenhum valor é devolvido.) Valor de devolução da notificação BCN_DROPDOWN .
Observações
Quando o utilizador clica na seta suspensa num controlo de botão dividido, o sistema envia uma mensagem de notificação BCN_DROPDOWN, que o OnDropDown método gere. No entanto, o CSplitButton objeto não encaminha a notificação BCN_DROPDOWN para o controlo que contém o controlo do botão split. Consequentemente, o controlo de contenção não pode suportar uma ação personalizada em resposta à notificação.
Para implementar uma ação personalizada que o controlo contém suporta, use um objeto CButton com um estilo de BS_SPLITBUTTON em vez de um CSplitButton objeto. Depois implementa um handler para a notificação BCN_DROPDOWN no CButton objeto. Para mais informações, consulte Estilos de Botões.
Para implementar uma ação personalizada que o controlo do botão de divisão suporta, use a reflexão de mensagens. Derive a sua própria classe a CSplitButton partir dessa classe e nomeie-a, por exemplo, CMySplitButton. Depois, adicione o seguinte mapa de mensagens à sua aplicação para tratar da notificação BCN_DROPDOWN:
BEGIN_MESSAGE_MAP(CMySplitButton,
CSplitButton)
ON_NOTIFY_REFLECT(BCN_DROPDOWN, &CMySplitButton::OnDropDown)
END_MESSAGE_MAP()
CSplitButton::SetDropDownMenu
Define o menu suspenso que é mostrado quando o utilizador clica na seta suspensa do botão de divisão atual.
void SetDropDownMenu(
UINT nMenuId,
UINT nSubMenuId);
void SetDropDownMenu(CMenu* pMenu);
Parâmetros
nMenuId
[dentro] O ID do recurso da barra de menus.
nSubMenuId
[dentro] O ID de recurso de um submenu.
pMenu
[dentro] Apontador para um objeto CMenu que especifica um submenu. O CSplitButton objeto elimina o CMenu objeto e o seu HMENU associado quando este CSplitButton sai do âmbito.
Observações
O parâmetro nMenuId identifica uma barra de menu, que é uma lista horizontal de itens da barra de menu. O parâmetro nSubMenuId é um número de índice baseado em zero que identifica um submenu, que é a lista suspensa dos itens do menu associados a cada item da barra do menu. Por exemplo, uma aplicação típica tem um menu que contém os itens da barra de menu, "Ficheiro", "Editar" e "Ajuda". O item da barra de menu "Ficheiro" tem um submenu que contém os itens do menu, "Abrir", "Fechar" e "Sair." Quando se clica na seta suspensa do comando de botões divididos, o controlo mostra o submenu especificado, e não a barra de menus.
A figura seguinte mostra uma caixa de diálogo que contém um controlo de pager e um (1) controlo de botão dividido. A seta (2) suspensa já foi clicada e o submenu (3) está exibido.
Example
A primeira instrução no seguinte exemplo de código demonstra o método CSplitButton::SetDropDownMenu . Criámos o menu com o editor de recursos do Visual Studio, que automaticamente nomeou o ID da barra de menus, IDR_MENU1. O parâmetro nSubMenuId , que é zero, refere-se ao único submenu da barra de menu.
// Initialize the dropdown menu of the splitbutton control.
m_splitButton.SetDropDownMenu(IDR_MENU1, 0);
// Create the pager control.
BOOL nRet;
CRect rect;
GetClientRect(&rect);
nRet = m_pager.Create(
(WS_VISIBLE | WS_CHILD | PGS_HORZ),
CRect(rect.Width() / 4, 5, (rect.Width() * 3) / 4, 55),
this,
IDC_PAGER1);
m_pager.GetClientRect(&rect);
nRet = m_button.Create(
_T("This is a very, very long button. 012345678901234567890"),
(WS_VISIBLE | WS_CHILD), // Do not use CCS_NORESIZE.
CRect(0, 0, rect.Width(), 30),
&m_pager, IDC_BUTTON1);
m_pager.SetChild(m_button.m_hWnd);
m_pager.SetButtonSize(20);
m_pager.SetBorder(1);