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
Crie de uma a quatro imagens bitmap para o botão.
Construa o objeto CBitmapButton.
Chame a função Create para criar o controle de botão Windows e anexá-lo ao objeto
CBitmapButton
.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
Crie de uma a quatro imagens bitmap para o botão.
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.
Defina a legenda do botão como um valor como "MYIMAGE" e defina um símbolo para o botão, como IDC_MYIMAGE.
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.
Na classe de diálogo do aplicativo (derivada de
CDialog
), adicione um objeto de membroCBitmapButton
.Na rotina OnInitDialog do objeto
CDialog
, chame a função AutoLoad do objetoCBitmapButton
usando como parâmetros a ID de controle do botão e o ponteirothis
do objetoCDialog
.
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
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