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