Partilhar via


Classe CSplitButton

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.

Diálogo com splitbutton e controlo de pager.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CButton

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.

Diálogo com splitbutton e controlo de pager.

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);

Consulte também

Classe CSplitButton
Gráfico de Hierarquia
Classe CButton