Partilhar via


Classe CButton

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.

Fornece a funcionalidade dos controlos de botões do Windows.

Sintaxe

class CButton : public CWnd

Membros

Construtores Públicos

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

Métodos Públicos

Nome Description
CButton::Create Cria o controlo do botão do Windows e anexa-o ao CButton objeto.
CButton::D rawItem Override para desenhar um objeto desenhado CButton pelo proprietário.
CButton::GetBitmap Recupera o handle do bitmap previamente definido com o SetBitmap.
CButton::GetButtonStyle Recupera informações sobre o estilo de controlo dos botões.
CButton::GetCheck Recupera o estado de verificação de um controlo de botão.
CButton::GetCursor Recupera o handle da imagem cursor previamente definida com o SetCursor.
CButton::GetIcon Recupera o handle do ícone previamente definido com o SetIcon.
CButton::GetIdealSize Recupera o tamanho ideal do controlo do botão.
CButton::GetImageList Recupera a lista de imagens do controlo de botões.
CButton::GetNote Recupera o componente note do controlo de ligação de comando atual.
CButton::GetNoteLength Recupera o comprimento do texto da nota para o controlo atual do link de comando.
CButton::GetSplitGlyph Recupera o glifo associado ao controlo atual do botão de divisão.
CButton::GetSplitImageList Recupera a lista de imagens do controlo atual do botão de divisão.
CButton::GetSplitInfo Recupera informações que definem o controlo atual do botão split.
CButton::GetSplitSize Recupera o retângulo delimitador do componente suspenso do controlo atual do botão dividido.
CButton::GetSplitStyle Recupera os estilos de botões divididos que definem o controlo atual dos botões divididos.
CButton::GetState Recupera o estado de verificação, o estado de destaque e o estado de foco de um controlo de botão.
CButton::ObtémTextoMargem Recupera a margem de texto do controlo do botão.
CButton::SetBitmap Especifica um bitmap a ser exibido no botão.
CButton::SetButtonStyle Muda o estilo de um botão.
CButton::SetCheck Define o estado de verificação de um controlo de botão.
CButton::SetCursor Especifica uma imagem cursor a ser exibida no botão.
CButton::SetDropDownState Define o estado suspenso do controlo atual do botão de divisão.
CButton::SetIcon Especifica um ícone a ser exibido no botão.
CButton::SetImageList Define a lista de imagens do controlo dos botões.
CButton::SetNote Define a nota no controlo de ligação de comando atual.
CButton::SetSplitGlyph Associa um glifo especificado ao controlo atual do botão dividido.
CButton::SetSplitImageList Associa uma lista de imagens ao controlo atual do botão de divisão.
CButton::SetSplitInfo Especifica a informação que define o controlo atual do botão de divisão.
CButton::SetSplitSize Define o retângulo delimitador do componente suspenso do botão de divisão atual.
CButton::SetSplitStyle Define o estilo do controlo atual dos botões divididos.
CButton::SetState Define o estado de destaque de um controlo de botão.
CButton::Margem de TextoDefinida Define a margem de texto do controlo do botão.

Observações

Um controlo por botão é uma pequena janela criança retangular que pode ser ligada e desligada. Os botões podem ser usados sozinhos ou em grupos e podem ser rotulados ou aparecer sem texto. Um botão normalmente muda de aparência quando o utilizador o clica.

Os botões típicos são a caixa de seleção, o botão de rádio e o botão de pressão. Um CButton objeto pode tornar-se qualquer um destes, de acordo com o estilo de botão especificado na sua inicialização pela função Create member.

Além disso, a classe CBitmapButton , derivada disso CButton , suporta a criação de controlos de botão rotulados com imagens bitmap em vez de texto. A CBitmapButton pode ter bitmaps separados para os estados de cima, baixo, foco e desativado de um botão.

Podes criar um controlo de botão a partir de um template de diálogo ou diretamente no teu código. Em ambos os casos, primeiro chama o construtor CButton para construir o CButton objeto; depois chama a Create função membro para criar o controlo do botão do Windows e anexá-lo ao CButton objeto.

A construção pode ser um processo de uma etapa numa classe derivada de CButton. Escreva um construtor para a classe derivada e chame Create a partir do próprio construtor.

Se quiser lidar com mensagens de notificação do Windows enviadas por um controlo de botão para o seu pai (normalmente uma classe derivada do CDialog), adicione uma entrada de mapa de mensagens e uma função membro handler de mensagens à classe pai para cada mensagem.

Cada entrada de mapa de mensagem assume a seguinte forma:

ON_Notificação(id, memberFxn)

onde id especifica o ID da janela filho do controlo que envia a notificação e memberFxn é o nome da função membro pai que escreveste para tratar da notificação.

O protótipo da função dos pais é o seguinte:

afx_msg void memberFxn();

As potenciais entradas do mapa de mensagens são as seguintes:

Entrada do mapa Enviado para ser pai quando...
ON_BN_CLICKED O utilizador clica num botão.
ON_BN_DOUBLECLICKED O utilizador clica duas vezes num botão.

Se criar um CButton objeto a partir de um recurso de diálogo, o CButton objeto é automaticamente destruído quando o utilizador fecha a caixa de diálogo.

Se criares um CButton objeto dentro de uma janela, podes ter de o destruir. Se criar o CButton objeto no heap usando a new função, deve chamar delete o objeto para o destruir quando o utilizador fecha o controlo do botão do Windows. Se criares o CButton objeto na pilha, ou ele estiver embutido no objeto de diálogo pai, ele é destruído automaticamente.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CButton

Requerimentos

Cabeçalho: afxwin.h

CButton::CButton

Constrói um CButton objeto.

CButton();

Example

// Declare a button object.
CButton myButton;

CButton::Create

Cria o controlo do botão do Windows e anexa-o ao CButton objeto.

virtual BOOL Create(
    LPCTSTR lpszCaption,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parâmetros

lpszLegenda
Especifica o texto do controlo do botão.

dwStyle
Especifica o estilo do controlo dos botões. Aplique qualquer combinação de estilos de botão ao botão.

retângulo
Especifica o tamanho e a posição do controlo do botão. Pode ser um CRect objeto ou uma RECT estrutura.

pParentWnd
Especifica a janela pai do controlo do botão, normalmente um CDialog. Não pode ser NULL.

nID
Especifica o ID do controlo do botão.

Valor de retorno

Não nulo se for bem-sucedido; caso contrário, 0.

Observações

Constroem um CButton objeto em dois passos. Primeiro, chama o construtor e depois chama Create, que cria o controlo do botão do Windows e o anexa ao CButton objeto.

Se o estilo WS_VISIBLE for indicado, o Windows envia o botão para controlar todas as mensagens necessárias para ativar e mostrar o botão.

Aplique os seguintes estilos de janela a um controlo de botão:

  • WS_CHILD Sempre

  • WS_VISIBLE Normalmente

  • WS_DISABLED Raramente

  • WS_GROUP Para agrupar os controlos

  • WS_TABSTOP Incluir o botão na ordem de separação

Example

CButton myButton1, myButton2, myButton3, myButton4;

// Create a push button.
myButton1.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                 CRect(10, 10, 100, 30), pParentWnd, 1);

// Create a radio button.
myButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
                 CRect(10, 40, 100, 70), pParentWnd, 2);

// Create an auto 3-state button.
myButton3.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
                 CRect(10, 70, 100, 100), pParentWnd, 3);

// Create an auto check box.
myButton4.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
                 CRect(10, 100, 100, 130), pParentWnd, 4);

CButton::D rawItem

Chamado pela estrutura quando um aspeto visual de um botão desenhado pelo proprietário mudou.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parâmetros

lpDrawItemStruct
Um longo apontador para uma estrutura DRAWITEMSTRUCT . A estrutura contém informações sobre o item a desenhar e o tipo de desenho necessário.

Observações

Um botão desenhado pelo proprietário tem o conjunto de estilo BS_OWNERDRAW. Substitua esta função de membro para implementar desenho para um objeto desenhado CButton pelo proprietário. A aplicação deve restaurar todos os objetos da interface do dispositivo gráfico (GDI) selecionados para o contexto de visualização fornecido em lpDrawItemStruct antes de a função membro terminar.

Veja também os valores do estilo BS_ .

Example

// NOTE: CMyButton is a class derived from CButton. The CMyButton
// object was created as follows:
//
// CMyButton myButton;
// myButton.Create(_T("My button"),
//      WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW,
//      CRect(10,10,100,30), pParentWnd, 1);
//

// This example implements the DrawItem method for a CButton-derived
// class that draws the button's text using the color red.
void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
   UINT uStyle = DFCS_BUTTONPUSH;

   // This code only works with buttons.
   ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);

   // If drawing selected, add the pushed style to DrawFrameControl.
   if (lpDrawItemStruct->itemState & ODS_SELECTED)
      uStyle |= DFCS_PUSHED;

   // Draw the button frame.
   ::DrawFrameControl(lpDrawItemStruct->hDC, &lpDrawItemStruct->rcItem,
                      DFC_BUTTON, uStyle);

   // Get the button's text.
   CString strText;
   GetWindowText(strText);

   // Draw the button text using the text color red.
   COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct->hDC, RGB(255, 0, 0));
   ::DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(),
              &lpDrawItemStruct->rcItem, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
   ::SetTextColor(lpDrawItemStruct->hDC, crOldColor);
}

CButton::GetBitmap

Chame esta função membro para obter o handle de um bitmap, anteriormente definido com o SetBitmap, que está associado a um botão.

HBITMAP GetBitmap() const;

Valor de retorno

Um identificador para um bitmap. NULL se não for especificado anteriormente nenhum bitmap.

Example

CButton myBitmapButton;

// Create a bitmap button.
myBitmapButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_BITMAP,
                      CRect(10, 10, 60, 50), pParentWnd, 1);

// If no bitmap is defined for the button, define the bitmap to the
// system close bitmap.
if (myBitmapButton.GetBitmap() == NULL)
   myBitmapButton.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CLOSE)));

CButton::GetButtonStyle

Recupera informações sobre o estilo de controlo dos botões.

UINT GetButtonStyle() const;

Valor de retorno

Devolve os estilos de botão para este CButton objeto. Esta função devolve apenas os valores de estilo BS_ , não nenhum dos outros estilos de janela.

Example

CButton myRadioButton;

// Create a radio button.
myRadioButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
                     CRect(10, 10, 100, 30), pParentWnd, 1);

// Change the button style to use one of the "auto" styles; for
// push button, change to def push button.
UINT uStyle = myRadioButton.GetButtonStyle();
if (uStyle == BS_PUSHBUTTON)
   uStyle = BS_DEFPUSHBUTTON;
else if (uStyle == BS_RADIOBUTTON)
   uStyle = BS_AUTORADIOBUTTON;
else if (uStyle == BS_CHECKBOX)
   uStyle = BS_AUTOCHECKBOX;
else if (uStyle == BS_3STATE)
   uStyle = BS_AUTO3STATE;

// Change the button style to the one wanted.
myRadioButton.SetButtonStyle(uStyle);

CButton::GetCheck

Recupera o estado de verificação de um botão de acesso ou caixa de seleção.

int GetCheck() const;

Valor de retorno

O valor de retorno de um controlo de botão criado com os estilos BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, BS_AUTO3STATE, BS_CHECKBOX, BS_RADIOBUTTON ou BS_3STATE é um dos seguintes valores:

Valor Meaning
BST_UNCHECKED O estado do botão está desligado.
BST_CHECKED O estado do botão está marcado.
BST_INDETERMINATE O estado do botão é indeterminado (aplica-se apenas se o botão tiver o estilo BS_3STATE ou BS_AUTO3STATE).

Se o botão tiver outro estilo, o valor de retorno é BST_UNCHECKED.

Example

CButton myA3Button;

// Create an auto 3-state button.
myA3Button.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
                  CRect(10, 10, 100, 30), pParentWnd, 1);

// Set the check state to the next state
// (i.e. BST_UNCHECKED changes to BST_CHECKED
// BST_CHECKED changes to BST_INDETERMINATE
// BST_INDETERMINATE changes to BST_UNCHECKED).
myA3Button.SetCheck(((myA3Button.GetCheck() + 1) % 3));

CButton::GetCursor

Chame esta função membro para obter a alavanca de um cursor, previamente definido com o SetCursor, que está associado a um botão.

HCURSOR GetCursor();

Valor de retorno

Um handle para uma imagem de cursor. NULL se não for especificado o cursor anteriormente.

Example

CButton myIconButton;

// Create an icon button.
myIconButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
                    CRect(10, 10, 60, 50), pParentWnd, 1);

// If no image is defined for the button, define the image to the
// system arrow and question mark cursor.
if (myIconButton.GetCursor() == NULL)
   myIconButton.SetCursor(::LoadCursor(NULL, IDC_HELP));

CButton::GetIcon

Chame esta função membro para obter o handle de um ícone, anteriormente definido com o SetIcon, que está associado a um botão.

HICON GetIcon() const;

Valor de retorno

Um identificador para um ícone. NULL se nenhum ícone for especificado anteriormente.

Example

CButton myIconButton2;

// Create an icon button.
myIconButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
                     CRect(10, 10, 60, 50), pParentWnd, 1);

// If no icon is defined for the button, define the icon to the
// system error icon.
if (myIconButton2.GetIcon() == NULL)
   myIconButton2.SetIcon(::LoadIcon(NULL, IDI_ERROR));

CButton::GetIdealSize

Recupera o tamanho ideal para o controlo do botão.

BOOL GetIdealSize(SIZE* psize);

Parâmetros

psize
Um apontador para o tamanho atual do botão.

Valor de retorno

Não nulo se for bem-sucedido; caso contrário, 0.

Observações

Esta função membro emula a funcionalidade da mensagem BCM_GETIDEALSIZE, conforme descrito na secção Botões do SDK do Windows.

CButton::GetImageList

Chame este método para obter a lista de imagens a partir do controlo do botão.

BOOL GetImageList(PBUTTON_IMAGELIST pbuttonImagelist);

Parâmetros

pbuttonImagelist
Um apontador para a lista de imagens do CButton objeto.

Valor de retorno

Não nulo se for bem-sucedido; caso contrário, 0.

Observações

Esta função membro emula a funcionalidade da mensagem BCM_GETIMAGELIST, conforme descrito na secção Buttons do SDK do Windows.

CButton::GetNote

Recupera o texto da nota associado ao controlo atual do link de comando.

CString GetNote() const;

BOOL GetNote(
    LPTSTR lpszNote,
    UINT* cchNote) const;

Parâmetros

lpszNote
[fora] Aponta para um buffer, que o chamador é responsável por alocar e desalocar. Se o valor de retorno for TRUE, o buffer contém o texto da nota associado ao controlo atual do link de comando; caso contrário, o buffer mantém-se inalterado.

cchNote
[inspira, expira] Um ponteiro para uma variável inteira sem sinal. Quando este método é chamado, a variável contém o tamanho do buffer especificado pelo parâmetro lpszNote . Quando este método regressa, se o valor de retorno for TRUE, a variável contém o tamanho da nota associada ao controlo atual do link de comando. Se o valor de retorno for FALSE, a variável contém o tamanho do buffer necessário para conter a nota.

Valor de retorno

Na primeira sobrecarga, um objeto CString que contém o texto da nota associado ao controlo de ligação de comando atual.

-ou-

Na segunda sobrecarga, TRUE se este método for bem-sucedido; caso contrário, FALSO.

Observações

Use este método apenas com controlos cujo estilo de botão seja BS_COMMANDLINK ou BS_DEFCOMMANDLINK.

Este método envia a mensagem BCM_GETNOTE , que é descrita no SDK do Windows.

CButton::GetNoteLength

Recupera o comprimento do texto da nota para o controlo atual do link de comando.

UINT GetNoteLength() const;

Valor de retorno

O comprimento do texto da nota, em caracteres Unicode de 16 bits, para o controlo atual do link de comando.

Observações

Use este método apenas com controlos cujo estilo de botão seja BS_COMMANDLINK ou BS_DEFCOMMANDLINK.

Este método envia a mensagem BCM_GETNOTELENGTH , que é descrita no SDK do Windows.

CButton::GetSplitGlyph

Recupera o glifo associado ao controlo atual do botão de divisão.

TCHAR GetSplitGlyph() const;

Valor de retorno

O personagem glifo associado ao controlo atual do botão dividido.

Observações

Um glifo é a representação física de um carácter numa fonte específica. Por exemplo, um controlo de botão dividido pode ser decorado com o glifo do carácter da marca Unicode (U+2713).

Use este método apenas com controlos cujo estilo de botão seja BS_SPLITBUTTON ou BS_DEFSPLITBUTTON.

Este método inicializa o mask membro de uma estrutura BUTTON_SPLITINFO com a flag BCSIF_GLYPH e depois envia essa estrutura na mensagem BCM_GETSPLITINFO descrita no SDK do Windows. Quando a função mensagem retorna, este método recupera o glifo do himlGlyph elemento da estrutura.

CButton::GetSplitImageList

Recupera a lista de imagens do controlo atual do botão de divisão.

CImageList* GetSplitImageList() const;

Valor de retorno

Um apontador para um objeto CImageList .

Observações

Use este método apenas com controlos cujo estilo de botão seja BS_SPLITBUTTON ou BS_DEFSPLITBUTTON.

Este método inicializa o mask membro de uma estrutura BUTTON_SPLITINFO com a flag de BCSIF_IMAGE e depois envia essa estrutura na mensagem BCM_GETSPLITINFO descrita no SDK do Windows. Quando a função mensagem retorna, este método recupera a lista de imagens do himlGlyph membro da estrutura.

CButton::GetSplitInfo

Recupera parâmetros que determinam como o Windows desenha o controlo atual do botão de divisão.

BOOL GetSplitInfo(PBUTTON_SPLITINFO pInfo) const;

Parâmetros

pInfo
[fora] Apontar para uma estrutura BUTTON_SPLITINFO que recebe informação sobre o controlo atual do botão split. O chamador é responsável pela atribuição da estrutura.

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSO.

Observações

Use este método apenas com controlos cujo estilo de botão seja BS_SPLITBUTTON ou BS_DEFSPLITBUTTON.

Este método envia a mensagem BCM_GETSPLITINFO , que é descrita no SDK do Windows.

CButton::GetSplitSize

Recupera o retângulo delimitador do componente suspenso do controlo atual do botão dividido.

BOOL GetSplitSize(LPSIZE pSize) const;

Parâmetros

pSize
[fora] Apontador para uma estrutura SIZE que recebe a descrição de um retângulo.

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSO.

Observações

Use este método apenas com controlos cujo estilo de botão seja BS_SPLITBUTTON ou BS_DEFSPLITBUTTON.

Quando o controlo do botão de divisão é expandido, pode ser exibido um componente suspenso, como um controlo de lista ou de paginação. Este método recupera o retângulo delimitador que contém o componente suspenso.

Este método inicializa o mask membro de uma estrutura BUTTON_SPLITINFO com a flag BCSIF_SIZE e depois envia essa estrutura na mensagem BCM_GETSPLITINFO descrita no SDK do Windows. Quando a função de mensagem retorna, este método recupera o retângulo delimitador do size elemento da estrutura.

CButton::GetSplitStyle

Recupera os estilos de botões divididos que definem o controlo atual dos botões divididos.

UINT GetSplitStyle() const;

Valor de retorno

Uma combinação bit a wise de estilos de botões divididos. Para mais informações, consulte o uSplitStyle membro da estrutura BUTTON_SPLITINFO .

Observações

Use este método apenas com controlos cujo estilo de botão seja BS_SPLITBUTTON ou BS_DEFSPLITBUTTON.

Os estilos de botões divididos especificam o alinhamento, a proporção de aspeto e o formato gráfico com que o Windows desenha um ícone de botão dividido.

Este método inicializa o mask membro de uma estrutura BUTTON_SPLITINFO com a flag BCSIF_STYLE e depois envia essa estrutura na mensagem BCM_GETSPLITINFO descrita no SDK do Windows. Quando a função de mensagem retorna, este método recupera os estilos de botão de divisão do uSplitStyle membro da estrutura.

CButton::GetState

Recupera o estado de um controlo de botão.

UINT GetState() const;

Valor de retorno

Um campo de bits que contém a combinação de valores que indicam o estado atual de um controlo de botão. A tabela seguinte lista os possíveis valores.

Estado do botão Valor Description
BST_UNCHECKED 0x0000 O estado inicial.
BST_CHECKED 0x0001 O controlo dos botões está verificado.
BST_INDETERMINATE 0x0002 O estado é indeterminado (só possível quando o controlo do botão tem três estados).
BST_PUSHED 0x0004 O comando do botão é pressionado.
BST_FOCUS 0x0008 O controlo dos botões é o foco.

Observações

Um controlo de botão com o estilo BS_3STATE ou BS_AUTO3STATE cria uma caixa de seleção que tem um terceiro estado chamado estado indeterminado. O estado indeterminado indica que a caixa de seleção não está nem assinalada nem desmarcada.

Example

CButton myPushButton;

// Create a push button.
myPushButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                    CRect(10, 10, 100, 30), pParentWnd, 1);

// Invert the highlight state of the button.
myPushButton.SetState(!(myPushButton.GetState() & 0x0004));

CButton::ObtémTextoMargem

Chame este método para obter a margem de texto do CButton objeto.

BOOL GetTextMargin(RECT* pmargin);

Parâmetros

pmargin
Um apontador para a margem do texto do CButton objeto.

Valor de retorno

Devolve a margem do texto. Não nulo se for bem-sucedido; caso contrário, 0.

Observações

Esta função membro emula a funcionalidade da mensagem BCM_GETTEXTMARGIN, conforme descrito na secção Botões do SDK do Windows.

CButton::SetBitmap

Chame esta função membro para associar um novo bitmap ao botão.

HBITMAP SetBitmap(HBITMAP hBitmap);

Parâmetros

hBitmap
O cabo de um bitmap.

Valor de retorno

O handle de um bitmap anteriormente associado ao botão.

Observações

O bitmap será automaticamente colocado na face do botão, centralizado por defeito. Se o bitmap for demasiado grande para o botão, será cortado de cada lado. Pode escolher outras opções de alinhamento, incluindo as seguintes:

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

Ao contrário do CBitmapButton, que usa quatro bitmaps por botão, SetBitmap usa apenas um bitmap por botão. Quando o botão é pressionado, o bitmap parece deslocar-se para baixo e para a direita.

És responsável por libertar o bitmap quando terminares de o usar.

Example

CButton myBitmapButton;

// Create a bitmap button.
myBitmapButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_BITMAP,
                      CRect(10, 10, 60, 50), pParentWnd, 1);

// If no bitmap is defined for the button, define the bitmap to the
// system close bitmap.
if (myBitmapButton.GetBitmap() == NULL)
   myBitmapButton.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CLOSE)));

CButton::SetButtonStyle

Muda o estilo de um botão.

void SetButtonStyle(
    UINT nStyle,
    BOOL bRedraw = TRUE);

Parâmetros

nStyle
Especifica o estilo do botão.

bRedraw
Especifica se o botão deve ser redesenhado. Um valor diferente de zero volta a desenhar o botão. Um valor 0 não volta a desenhar o botão. O botão é redesenhado por defeito.

Observações

Use a GetButtonStyle função de membro para recuperar o estilo do botão. A palavra de ordem baixa do estilo completo de botões é o estilo específico de botão.

Example

CButton myRadioButton;

// Create a radio button.
myRadioButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
                     CRect(10, 10, 100, 30), pParentWnd, 1);

// Change the button style to use one of the "auto" styles; for
// push button, change to def push button.
UINT uStyle = myRadioButton.GetButtonStyle();
if (uStyle == BS_PUSHBUTTON)
   uStyle = BS_DEFPUSHBUTTON;
else if (uStyle == BS_RADIOBUTTON)
   uStyle = BS_AUTORADIOBUTTON;
else if (uStyle == BS_CHECKBOX)
   uStyle = BS_AUTOCHECKBOX;
else if (uStyle == BS_3STATE)
   uStyle = BS_AUTO3STATE;

// Change the button style to the one wanted.
myRadioButton.SetButtonStyle(uStyle);

CButton::SetCheck

Define ou reinicia o estado de verificação de um botão de rádio ou caixa de seleção.

void SetCheck(int nCheck);

Parâmetros

nCheck
Especifica o estado de verificação. Este parâmetro pode ser um dos seguintes:

Valor Meaning
BST_UNCHECKED Defina o estado do botão para desmarcado.
BST_CHECKED Defina o estado do botão para verificado.
BST_INDETERMINATE Defina o estado do botão para indeterminado. Este valor só pode ser usado se o botão tiver o estilo BS_3STATE ou BS_AUTO3STATE.

Observações

Esta função de elemento não tem efeito sobre um botão.

Example

CButton myA3Button;

// Create an auto 3-state button.
myA3Button.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
                  CRect(10, 10, 100, 30), pParentWnd, 1);

// Set the check state to the next state
// (i.e. BST_UNCHECKED changes to BST_CHECKED
// BST_CHECKED changes to BST_INDETERMINATE
// BST_INDETERMINATE changes to BST_UNCHECKED).
myA3Button.SetCheck(((myA3Button.GetCheck() + 1) % 3));

CButton::SetCursor

Chame esta função de membro para associar um novo cursor ao botão.

HCURSOR SetCursor(HCURSOR hCursor);

Parâmetros

hCursor
O cabo de um cursor.

Valor de retorno

O cabo de um cursor anteriormente associado ao botão.

Observações

O cursor será colocado automaticamente na face do botão, centrado por defeito. Se o cursor for demasiado grande para o botão, será cortado de ambos os lados. Pode escolher outras opções de alinhamento, incluindo as seguintes:

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

Ao contrário do CBitmapButton, que usa quatro bitmaps por botão, SetCursor usa apenas um cursor por botão. Quando o botão é pressionado, o cursor parece deslocar-se para baixo e para a direita.

Example

CButton myIconButton;

// Create an icon button.
myIconButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
                    CRect(10, 10, 60, 50), pParentWnd, 1);

// If no image is defined for the button, define the image to the
// system arrow and question mark cursor.
if (myIconButton.GetCursor() == NULL)
   myIconButton.SetCursor(::LoadCursor(NULL, IDC_HELP));

CButton::SetDropDownState

Define o estado suspenso do controlo atual do botão de divisão.

BOOL SetDropDownState(BOOL fDropDown);

Parâmetros

fDropDown
[dentro] TRUE para definir BST_DROPDOWNPUSHED estado; caso contrário, FALSO.

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSO.

Observações

Um controlo de botões divididos tem um estilo de BS_SPLITBUTTON ou BS_DEFSPLITBUTTON e consiste num botão e numa seta suspensa à sua direita. Para mais informações, consulte Estilos de Botões. Normalmente, o estado do menu suspenso é definido quando o utilizador clica na seta suspensa. Use este método para definir programaticamente o estado suspenso do controlo. A seta suspensa é desenhada sombreada para indicar o estado.

Este método envia a mensagem BCM_SETDROPDOWNSTATE , que é descrita no SDK do Windows.

Example

O primeiro exemplo de código define a variável, m_splitButton, que é usada para aceder programaticamente ao controlo do botão dividido. Esta variável é usada no exemplo seguinte.

public:
// Variable to access programmatically defined command link control.
CButton m_cmdLink;
// Variable to access programmatically defined split button control.
CButton m_splitButton;

O próximo exemplo de código define o estado do controlo do botão split para indicar que a seta suspensa é pressionada.

/* Set the state of the split button control to indicate that 
   the drop-down arrow is pushed. The arrow is drawn shaded to 
   indicate the state.
   */
m_splitButton.SetDropDownState(TRUE);

CButton::DefinirElevaçãoNecessária

Define o estado do controlo de botão atual para elevation required, que é necessário para que o controlo exiba um ícone de segurança elevado.

BOOL SetElevationRequired(BOOL fElevationRequired);

Parâmetros

fElevaçãoNecessária
[dentro] VERDADEIRO ao estado do conjunto elevation required ; caso contrário, FALSO.

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSO.

Observações

Se um botão ou controlo de ligação de comando exigir permissão de segurança elevada para executar uma ação, defina o controlo para elevation required estado. Subsequentemente, o Windows mostra o ícone do escudo de Controlo de Conta de Utilizador (UAC) no controlo. Para obter mais informações, consulte Controle de conta de usuário.

Este método envia a mensagem BCM_SETSHIELD , que é descrita no SDK do Windows.

CButton::SetIcon

Chame esta função de membro para associar um novo ícone ao botão.

HICON SetIcon(HICON hIcon);

Parâmetros

hIcon
O cabo de um ícone.

Valor de retorno

O pegador de um ícone anteriormente associado ao botão.

Observações

O ícone será colocado automaticamente na face do botão, centrado por defeito. Se o ícone for demasiado grande para o botão, será cortado de ambos os lados. Pode escolher outras opções de alinhamento, incluindo as seguintes:

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

Ao contrário do CBitmapButton, que usa quatro bitmaps por botão, SetIcon usa apenas um ícone por botão. Quando o botão é pressionado, o ícone parece deslocar-se para baixo e para a direita.

Example

CButton myIconButton2;

// Create an icon button.
myIconButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
                     CRect(10, 10, 60, 50), pParentWnd, 1);

// If no icon is defined for the button, define the icon to the
// system error icon.
if (myIconButton2.GetIcon() == NULL)
   myIconButton2.SetIcon(::LoadIcon(NULL, IDI_ERROR));

CButton::SetImageList

Chame este método para definir a lista de imagens do CButton objeto.

BOOL SetImageList(PBUTTON_IMAGELIST pbuttonImagelist);

Parâmetros

pbuttonImagelist
Um indicador para a nova lista de imagens.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

Esta função membro emula a funcionalidade da mensagem BCM_SETIMAGELIST, conforme descrito na secção Botões do SDK do Windows.

CButton::SetNote

Define o texto da nota para o controlo de ligação de comando atual.

BOOL SetNote(LPCTSTR lpszNote);

Parâmetros

lpszNote
[dentro] Apontador para uma cadeia Unicode definida como texto da nota para o controlo do link de comando.

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSO.

Observações

Use este método apenas com controlos cujo estilo de botão seja BS_COMMANDLINK ou BS_DEFCOMMANDLINK.

Este método envia a mensagem BCM_SETNOTE , que é descrita no SDK do Windows.

Example

O primeiro exemplo de código define a variável, m_cmdLink, que é usada para aceder programaticamente ao controlo do link de comando. Esta variável é usada no exemplo seguinte.

public:
// Variable to access programmatically defined command link control.
CButton m_cmdLink;
// Variable to access programmatically defined split button control.
CButton m_splitButton;

O próximo exemplo de código define o texto da nota para o controlo do link de comando.

// Set the command link text.
m_cmdLink.SetNote(_T("This is the command link note."));

CButton::SetSplitGlyph

Associa um glifo especificado ao controlo atual do botão dividido.

BOOL SetSplitGlyph(TCHAR chGlyph);

Parâmetros

chGlyph
[dentro] Um personagem que especifica o glifo a usar como seta suspensa do botão de divisão.

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSO.

Observações

Use este método apenas com controlos que tenham o estilo de botões BS_SPLITBUTTON ou BS_DEFSPLITBUTTON.

Um glifo é a representação física de um carácter numa fonte específica. O parâmetro chGlyph não é usado como glifo, mas sim usado para selecionar um glifo de um conjunto de glifos definidos pelo sistema. O glifo da seta predefinida é especificado por um carácter '6' e assemelha-se ao carácter Unicode BLACK DOWN-POINTING TRIANGLE (U+25BC).

Este método inicializa o mask membro de uma estrutura BUTTON_SPLITINFO com a flag BCSIF_GLYPH e o himlGlyph membro com o parâmetro chGlyph , e depois envia essa estrutura na mensagem BCM_GETSPLITINFO descrita no SDK do Windows.

CButton::SetSplitImageList

Associa uma lista de imagens ao controlo atual do botão de divisão.

BOOL SetSplitImageList(CImageList* pSplitImageList);

Parâmetros

pSplitImageList
[dentro] Apontar para um objeto CImageList para atribuir ao controlo atual do botão dividido.

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSO.

Observações

Use este método apenas com controlos cujo estilo de botão seja BS_SPLITBUTTON ou BS_DEFSPLITBUTTON.

Este método inicializa o mask membro de uma estrutura BUTTON_SPLITINFO com a flag BCSIF_IMAGE e o himlGlyph membro com o parâmetro pSplitImageList , e depois envia essa estrutura na mensagem BCM_GETSPLITINFO descrita no SDK do Windows.

CButton::SetSplitInfo

Especifica parâmetros que determinam como o Windows desenha o controlo atual do botão de divisão.

BOOL SetSplitInfo(PBUTTON_SPLITINFO pInfo);

Parâmetros

pInfo
[dentro] Apontador para uma estrutura BUTTON_SPLITINFO que define o controlo atual do botão split.

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSO.

Observações

Use este método apenas com controlos cujo estilo de botão seja BS_SPLITBUTTON ou BS_DEFSPLITBUTTON.

Este método envia a mensagem BCM_SETSPLITINFO , que é descrita no SDK do Windows.

Example

O primeiro exemplo de código define a variável, m_splitButton, que é usada para aceder programaticamente ao controlo do botão dividido.

public:
// Variable to access programmatically defined command link control.
CButton m_cmdLink;
// Variable to access programmatically defined split button control.
CButton m_splitButton;

O próximo exemplo de código altera o glifo usado para a seta suspensa do botão de dividir. O exemplo substitui um glifo triangular apontando para cima pelo glifo triângulo que aponta para baixo por defeito. O glifo que é apresentado depende do carácter que especificas no himlGlyph membro da BUTTON_SPLITINFO estrutura. O glifo do triângulo que aponta para baixo é especificado pelo carácter '6' e o glifo do triângulo que aponta para cima é especificado pelo carácter '5'. Para comparação, veja o método de conveniência, CButton::SetSplitGlyph.

/* 
   The drop-down arrow glyph is a function of the specified character. 
   The default "down" drop-down arrow glyph is specified by a 
   character '6'. Set the "up" arrow glyph, which is a character '5'.
   See the convenience method, SetSplitGlyph(), for comparison.
   */
BUTTON_SPLITINFO bsInfo = {0};
bsInfo.mask = BCSIF_GLYPH;
TCHAR chGlyph = _T('5'); // "up" arrow glyph
bsInfo.himlGlyph = (HIMAGELIST)chGlyph;
bRC = m_splitButton.SetSplitInfo(&bsInfo);

CButton::SetSplitSize

Define o retângulo delimitador do componente suspenso do botão de divisão atual.

BOOL SetSplitSize(LPSIZE pSize);

Parâmetros

pSize
[dentro] Apontador para uma estrutura SIZE que descreve um retângulo delimitador.

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSO.

Observações

Use este método apenas com controlos cujo estilo de botão seja BS_SPLITBUTTON ou BS_DEFSPLITBUTTON.

Quando o controlo do botão de divisão é expandido, pode ser exibido um componente suspenso, como um controlo de lista ou de paginação. Este método especifica o tamanho do retângulo delimitador que contém o componente suspenso.

Este método inicializa o mask membro de uma estrutura BUTTON_SPLITINFO com a flag BCSIF_SIZE e o size membro com o parâmetro pSize , e depois envia essa estrutura na mensagem BCM_GETSPLITINFO descrita no SDK do Windows.

Example

O primeiro exemplo de código define a variável, m_splitButton, que é usada para aceder programaticamente ao controlo do botão dividido. Esta variável é usada no exemplo seguinte.

public:
// Variable to access programmatically defined command link control.
CButton m_cmdLink;
// Variable to access programmatically defined split button control.
CButton m_splitButton;

O próximo exemplo de código duplica o tamanho da seta suspensa do botão de dividir.

// Double the size of the split button drop-down arrow.
SIZE sz;
bRC = m_splitButton.GetSplitSize(&sz); // current size
sz.cx = sz.cx * 2;
sz.cy = sz.cy * 2;
bRC = m_splitButton.SetSplitSize(&sz);

CButton::SetSplitStyle

Define o estilo do controlo atual dos botões divididos.

BOOL SetSplitStyle(UINT uSplitStyle);

Parâmetros

uSplitStyle
[dentro] Uma combinação bit a wise de estilos de botões divididos. Para mais informações, consulte o uSplitStyle membro da estrutura BUTTON_SPLITINFO .

Valor de retorno

TRUE se este método for bem-sucedido; caso contrário, FALSO.

Observações

Use este método apenas com controlos cujo estilo de botão seja BS_SPLITBUTTON ou BS_DEFSPLITBUTTON.

Os estilos de botões divididos especificam o alinhamento, a proporção de aspeto e o formato gráfico com que o Windows desenha um ícone de botão dividido. Para mais informações, consulte o uSplitStyle membro da estrutura BUTTON_SPLITINFO .

Este método inicializa o mask membro de uma estrutura BUTTON_SPLITINFO com a flag BCSIF_STYLE e o uSplitStyle membro com o parâmetro uSplitStyle , e depois envia essa estrutura na mensagem BCM_GETSPLITINFO descrita no SDK do Windows.

Example

O primeiro exemplo de código define a variável, m_splitButton, que é usada para aceder programaticamente ao controlo do botão dividido.

public:
// Variable to access programmatically defined command link control.
CButton m_cmdLink;
// Variable to access programmatically defined split button control.
CButton m_splitButton;

O próximo exemplo de código define o estilo da seta suspensa do botão de dividir. O estilo BCSS_ALIGNLEFT mostra a seta no lado esquerdo do botão, e o estilo BCSS_STRETCH mantém as proporções da seta suspensa quando redimensionas o botão.

/* 
    Set the style of the split button drop-down arrow: Display the 
    arrow on the left and retain the arrow's proportions when resizing 
    the control.
    */
bRC = m_splitButton.SetSplitStyle(BCSS_ALIGNLEFT | BCSS_STRETCH);

CButton::SetState

Define se um controlo de botão está destacado ou não.

void SetState(BOOL bHighlight);

Parâmetros

bDestaques
Especifica se o botão deve ser destacado. Um valor diferente de zero destaca o botão; um valor 0 remove qualquer realce.

Observações

O realce afeta o exterior do controlo de um botão. Não tem qualquer efeito no estado de verificação de um botão de acesso ou caixa de seleção.

Um controlo de botão é automaticamente destacado quando o utilizador clica e mantém pressionado o botão esquerdo do rato. O realce é removido quando o utilizador solta o botão do rato.

Example

CButton myPushButton;

// Create a push button.
myPushButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                    CRect(10, 10, 100, 30), pParentWnd, 1);

// Invert the highlight state of the button.
myPushButton.SetState(!(myPushButton.GetState() & 0x0004));

CButton::Margem de TextoDefinida

Chame este método para definir a margem de texto do CButton objeto.

BOOL SetTextMargin(RECT* pmargin);

Parâmetros

pmargin
Um apontador para a nova margem do texto.

Valor de retorno

Retorna VERDADEIRO em caso de sucesso, FALSO em caso de falha.

Observações

Esta função membro emula a funcionalidade da mensagem BCM_SETTEXTMARGIN, conforme descrito na secção Buttons do SDK do Windows.

Consulte também

Classe CWnd
Gráfico de Hierarquia
Classe CWnd
Classe CComboBox
Classe CEdit
Classe CListBox
Classe CScrollBar
Classe CStatic
Classe CBitmapButton
Classe CDialog