Partilhar via


Classe CBitmapButton

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.

Cria controlos por botão rotulados com imagens bitmap em vez de texto.

Sintaxe

class CBitmapButton : public CButton

Membros

Construtores Públicos

Nome Description
Botão CBitmap::Botão CBitmapButton Constrói um CBitmapButton objeto.

Métodos Públicos

Nome Description
CBitmapButton::AutoLoad Associa um botão numa caixa de diálogo a um objeto da CBitmapButton classe, carrega o(s) bitmap(s) pelo nome e dimensiona o botão para se ajustar ao bitmap.
CBitmapButton::LoadBitmaps Inicializa o objeto carregando um ou mais recursos bitmap nomeados a partir do ficheiro de recursos da aplicação e anexando os bitmaps ao objeto.
Botão CBitmap::TamanhoParaConteúdo Dimensiona o botão para acomodar o bitmap.

Observações

CBitmapButton Os objetos contêm até quatro bitmaps, que contêm imagens para os diferentes estados que um botão pode assumir: para cima (ou normal), para baixo (ou selecionado), focado e desativado. Apenas é necessário o primeiro bitmap; Os outros são opcionais.

As imagens de botão bitmap incluem a borda à volta da imagem, bem como a própria imagem. A borda normalmente desempenha um papel na indicação do estado do botão. Por exemplo, o bitmap para o estado focado é geralmente semelhante ao do estado up, mas com um retângulo tracejado inserido na borda ou uma linha espessa e contínua na borda. O bitmap para o estado desativado costuma assemelhar-se ao do estado up, mas tem menor contraste (como uma seleção de menu atenuada ou cinzenta).

Estes bitmaps podem ter qualquer tamanho, mas todos são tratados como se tivessem o mesmo tamanho do bitmap para o estado up.

Várias aplicações exigem diferentes combinações de imagens bitmap:

Up Baixo Focused Disabled Aplicação
× Bitmap
× × Botão sem estilo WS_TABSTOP
× × × × Botão de diálogo com todos os estados
× × × Botão de diálogo com estilo WS_TABSTOP

Ao criar um controlo de botão bitmap, defina o estilo BS_OWNERDRAW para especificar que o botão é desenhado pelo proprietário. Isto faz com que o Windows envie as mensagens WM_MEASUREITEM e WM_DRAWITEM para o botão; O sistema trata destas mensagens e gere a aparência do botão por si.

Para criar um controlo de botão bitmap na área do cliente de uma janela

  1. Crie de uma a quatro imagens bitmap para o botão.

  2. Constrói o objeto CBitmapButton .

  3. Chama a função Create para criar o controlo de botões do Windows e anexa-o ao CBitmapButton objeto.

  4. Chame a função membro LoadBitmaps para carregar os recursos bitmap depois de o botão bitmap estar construído.

Incluir um controlo de botão bitmap numa caixa de diálogo

  1. Crie de uma a quatro imagens bitmap para o botão.

  2. Cria um modelo de diálogo com um botão de desenho do proprietário posicionado onde queres o botão bitmap. O tamanho do botão no modelo não importa.

  3. Defina a legenda do botão para um valor como "MYIMAGE" e defina um símbolo para o botão, como IDC_MYIMAGE.

  4. No script de recurso da sua aplicação, dê a cada imagem criada para o botão um ID construído adicionando uma das letras "U", "D", "F" ou "X" (para cima, baixo, focado e desativado) à cadeia usada para a legenda do botão no passo 3. Para a legenda do botão "MYIMAGE", por exemplo, os IDs seriam "MYIMAGEU", "MYIMAGED", "MYIMAGEF" e "MYIMAGEX." Deve especificar o ID dos seus bitmaps entre aspas duplas. Caso contrário, o editor de recursos atribuirá um inteiro ao recurso e o MFC falhará ao carregar a imagem.

  5. Na classe de diálogo da sua aplicação (derivada de CDialog), adicione um CBitmapButton objeto membro.

  6. Na CDialog rotina OnInitDialog do objeto, chama a CBitmapButton função AutoLoad do objeto, usando como parâmetros o ID de controlo do botão e o CDialog ponteiro do this objeto.

Se quiser lidar com mensagens de notificação do Windows, como BN_CLICKED, enviadas por um controlo de botão bitmap para o seu pai (normalmente uma classe derivada de CDialog), adicione ao CDialogobjeto derivado uma entrada de mapa de mensagens e uma função membro handler de mensagens para cada mensagem. As notificações enviadas por um CBitmapButton objeto são as mesmas enviadas por um objeto CButton .

A classe CToolBar adota uma abordagem diferente aos botões bitmap.

Para mais informações sobre CBitmapButton, veja Controlos.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CButton

CBitmapButton

Requerimentos

Cabeçalho: afxext.h

CBitmapButton::AutoLoad

Associa um botão numa caixa de diálogo a um objeto da CBitmapButton classe, carrega o(s) bitmap(s) pelo nome e dimensiona o botão para se ajustar ao bitmap.

BOOL AutoLoad(
    UINT nID,
    CWnd* pParent);

Parâmetros

nID
O ID de controlo do botão.

pParent
Aponta para o objeto que detém o botão.

Valor de retorno

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

Observações

Use a AutoLoad função para inicializar um botão de desenho do proprietário numa caixa de diálogo como um botão bitmap. As instruções para usar esta função estão nas observações da CBitmapButton turma.

Example

CBitmapButton myButton;

// Initialize the owner-drawn button with the id IDC_MYBUTTON as a bitmap
// button. This code is used in the OnInitDialog handler of my dialog.
myButton.AutoLoad(IDC_MYBUTTON, this);

Botão CBitmap::Botão CBitmapButton

Cria um CBitmapButton objeto.

CBitmapButton();

Observações

Depois de criar o objeto C++ CBitmapButton , chame CButton::Create para criar o controlo de botões do Windows e anexá-lo ao CBitmapButton objeto.

Example

// Declare a bitmap button object on the stack.
CBitmapButton myButton;

// Declare a bitmap button object on the heap.
CBitmapButton *pmyButton = new CBitmapButton;

CBitmapButton::LoadBitmaps

Use esta função quando quiser carregar imagens bitmap identificadas pelos seus nomes de recursos ou números ID, ou quando não pode usar a AutoLoad função porque, por exemplo, está a criar um botão bitmap que não faz parte de uma caixa de diálogo.

BOOL LoadBitmaps(
    LPCTSTR lpszBitmapResource,
    LPCTSTR lpszBitmapResourceSel = NULL,
    LPCTSTR lpszBitmapResourceFocus = NULL,
    LPCTSTR lpszBitmapResourceDisabled = NULL);

BOOL LoadBitmaps(
    UINT nIDBitmapResource,
    UINT nIDBitmapResourceSel = 0,
    UINT nIDBitmapResourceFocus = 0,
    UINT nIDBitmapResourceDisabled = 0);

Parâmetros

lpszBitmapResource
Aponta para a cadeia terminada por null que contém o nome do bitmap para o estado normal ou "para cima" de um botão de bitmap. Required.

lpszBitmapResourceSel
Aponta para a cadeia terminada nula que contém o nome do bitmap para o estado selecionado ou "down" do botão bitmap. Pode ser NULL.

lpszBitmapResourceFocus
Aponta para a cadeia terminada em nulo que contém o nome do bitmap para o estado focado do botão bitmap. Pode ser NULL.

lpszBitmapResourceDisabled
Aponta para a cadeia terminada por nulo que contém o nome do bitmap para o estado desativado do botão bitmap. Pode ser NULL.

nIDBitmapResource
Especifica o número de ID do recurso bitmap para o estado normal ou "ativo" de um botão bitmap. Required.

nIDBitmapResourceSel
Especifica o número de ID do recurso bitmap para o estado selecionado ou "para baixo" de um botão bitmap. Pode ser 0.

nIDBitmapResourceFocus
Especifica o número de ID do recurso bitmap para o estado focado de um botão bitmap. Pode ser 0.

nIDBitmapResourceDisabled
Especifica o número de ID do recurso bitmap para o estado desativado de um botão bitmap. Pode ser 0.

Valor de retorno

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

Example

// Create the bitmap button (must include the BS_OWNERDRAW style).
pmyButton->Create(NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
                  CRect(10, 10, 100, 100), pParentWnd, 1);

// Load the bitmaps for this button.
pmyButton->LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS, IDB_DISABLE);

Botão CBitmap::TamanhoParaConteúdo

Chame esta função para redimensionar um botão de bitmap para o tamanho do bitmap.

void SizeToContent();

Example

CBitmapButton *pmyButton = new CBitmapButton();

// Create the bitmap button (must include the BS_OWNERDRAW style).
pmyButton->Create(NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
                  CRect(10, 10, 100, 100), pParentWnd, 1);

// Load the bitmaps for this button.
pmyButton->LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS, IDB_DISABLE);

// Resize the button to be the size of the bitmaps.
pmyButton->SizeToContent();

Consulte também

CTRLTEST de Exemplo MFC
Classe CButton
Gráfico de Hierarquia