Compartilhar via


Classe CBitmapButton

Cria controles de botão rotulados com imagens em bitmap, em vez de texto.

Sintaxe

class CBitmapButton : public CButton

Membros

Construtores públicos

Nome Descrição
CBitmapButton::CBitmapButton Constrói um objeto CBitmapButton.

Métodos públicos

Nome Descrição
CBitmapButton::AutoLoad Associa um botão em uma caixa de diálogo a um objeto da classe CBitmapButton, carrega o(s) bitmap(s) pelo nome e dimensiona o botão para ajustar o bitmap.
CBitmapButton::LoadBitmaps Inicializa o objeto carregando um ou mais recursos de bitmap nomeados do arquivo de recurso do aplicativo e anexando os bitmaps ao objeto.
CBitmapButton::SizeToContent Dimensiona o botão para acomodar o bitmap.

Comentários

Os objetos CBitmapButton contêm até quatro bitmaps, que contêm imagens para os diferentes estados que um botão pode assumir: levantado (ou normal), abaixado (ou selecionado), focado e desabilitado. Somente o primeiro bitmap é obrigatório; os outros são opcionais.

As imagens de botão de bitmap incluem a borda ao redor da imagem, bem como a própria imagem. A borda normalmente desempenha um papel em mostrar o estado do botão. Por exemplo, o bitmap para o estado focalizado geralmente é semelhante ao estado levantado, mas com um conjunto de retângulos tracejados da borda ou uma linha sólida grossa na borda. O bitmap para o estado desabilitado geralmente se assemelha ao do estado levantado, mas tem um contraste inferior (como uma seleção de menu esmaecida ou acinzentada).

Esses bitmaps podem ser de qualquer tamanho, mas todos são tratados como se fossem do mesmo tamanho que o bitmap para o estado levantado.

Vários aplicativos exigem combinações diferentes de imagens bitmap:

Up Down Focalizado Desabilitadas Aplicativo
× Bitmap
× × Botão sem o estilo WS_TABSTOP
× × × × Botão de diálogo com todos os estados
× × × Botão de diálogo com estilo WS_TABSTOP

Ao criar um controle de botão bitmap, defina o estilo BS_OWNERDRAW para especificar que o botão é desenhado pelo proprietário. Isso faz com que o Windows envie as mensagens WM_MEASUREITEM e WM_DRAWITEM para o botão; a estrutura manipula essas mensagens e gerencia a aparência do botão para você.

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

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

  2. Construa o objeto CBitmapButton.

  3. Chame a função Create para criar o controle de botão Windows e anexá-lo ao objeto CBitmapButton.

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

Para incluir um controle de botão bitmap em uma caixa de diálogo

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

  2. Crie um modelo de caixa de diálogo com um botão de desenho do proprietário posicionado no local em que você deseja colocar o botão bitmap. O tamanho do botão no modelo não importa.

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

  4. No script de recurso do aplicativo, forneça a cada uma das imagens criadas para o botão uma ID construída acrescentando uma das letras "U", "D", "F" ou "X" (levantado, abaixado, focado e desabilitado) à cadeia de caracteres usada para a legenda do botão na etapa 3. Para a legenda do botão " MYIMAGE", por exemplo, as IDs seriam " MYIMAGEU", " MYIMAGED", " MYIMAGEF" e " MYIMAGEX". Você deve especificar a ID de 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 do aplicativo (derivada de CDialog), adicione um objeto de membro CBitmapButton.

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

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

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

Para mais informações sobre CBitmapButton, confira Controles.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CButton

CBitmapButton

Requisitos

Cabeçalho: afxext.h

CBitmapButton::AutoLoad

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

BOOL AutoLoad(
    UINT nID,
    CWnd* pParent);

Parâmetros

Nid
A ID de controle do botão.

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

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

Use a função AutoLoad para inicializar um botão de desenho do proprietário em uma caixa de diálogo como um botão bitmap. As instruções para usar essa função estão nos comentários para a classe CBitmapButton.

Exemplo

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

CBitmapButton::CBitmapButton

Cria um objeto CBitmapButton.

CBitmapButton();

Comentários

Depois de criar o objeto C++ CBitmapButton, chame CButton::Create para criar o controle de botão Windows e anexá-lo ao objeto CBitmapButton.

Exemplo

// 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 essa função quando quiser carregar imagens de bitmap identificadas por seus nomes de recursos ou números de ID ou quando não puder usar a função AutoLoad porque, por exemplo, você está criando 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 de caracteres terminada em nulo que contém o nome do bitmap para o estado normal ou "ativo" do botão bitmap. Obrigatória.

lpszBitmapResourceSel
Aponta para a cadeia de caracteres terminada em nulo que contém o nome do bitmap para o estado selecionado ou "abaixado" do botão bitmap. Pode ser NULL.

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

lpszBitmapResourceDisabled
Aponta para a cadeia de caracteres terminada em nulo que contém o nome do bitmap para o estado desabilitado do botão bitmap. Pode ser NULL.

nIDBitmapResource
Especifica o número da ID do recurso de bitmap para o estado normal ou "levantado" do botão bitmap. Obrigatória.

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

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

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

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Exemplo


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

CBitmapButton::SizeToContent

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

void SizeToContent();

Exemplo

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

Confira também

Exemplo de MFC CTRLTEST
Classe CButton
Gráfico da hierarquia