Usando listas de imagens em um controle da barra de ferramentas

Por padrão, as imagens usadas pelos botões em um controle de barra de ferramentas são armazenadas como um só bitmap. No entanto, você também pode armazenar imagens de botão em um conjunto de listas de imagens. O objeto de controle da barra de ferramentas pode usar até três listas de imagens separadas:

  • Lista de imagens habilitadas Contém imagens de botões da barra de ferramentas que estão habilitados no momento.

  • Lista de imagens desabilitadas Contém imagens de botões da barra de ferramentas que estão desabilitados no momento.

  • Lista de imagens realçadas Contém imagens de botões da barra de ferramentas que estão realçados no momento. Essa lista de imagens é usada somente quando a barra de ferramentas usa o estilo TBSTYLE_FLAT.

Essas listas de imagens são usadas pelo controle da barra de ferramentas quando você as associa ao objeto CToolBarCtrl. Essa associação é realizada fazendo chamadas para CToolBarCtrl::SetImageList, SetDisabledImageList e SetHotImageList.

Por padrão, o MFC usa a classe CToolBar para implementar barras de ferramentas de aplicativo MFC. No entanto, a função membro GetToolBarCtrl pode ser usada para recuperar o objeto inserido CToolBarCtrl. Em seguida, você pode fazer chamadas para funções membro CToolBarCtrl usando o objeto retornado.

O exemplo a seguir demonstra essa técnica atribuindo uma lista de imagens habilitadas (m_ToolBarImages) e desabilitadas (m_ToolBarDisabledImages) a um objeto CToolBarCtrl (m_ToolBarCtrl).

CWinApp* pApp = AfxGetApp();

m_ToolBarImages.Create(16, 16, ILC_COLOR, 4, 4);
m_ToolBarImages.Add(pApp->LoadIcon(IDI_BLK));
m_ToolBarImages.Add(pApp->LoadIcon(IDI_RED));
m_ToolBarImages.Add(pApp->LoadIcon(IDI_YELL));
m_ToolBarImages.Add(pApp->LoadIcon(IDI_WHI));

m_ToolBarDisabledImages.Create(16, 16, ILC_COLOR, 4, 4);
m_ToolBarDisabledImages.Add(pApp->LoadIcon(IDI_DIS_BLK));
m_ToolBarDisabledImages.Add(pApp->LoadIcon(IDI_DIS_RED));
m_ToolBarDisabledImages.Add(pApp->LoadIcon(IDI_DIS_YELL));
m_ToolBarDisabledImages.Add(pApp->LoadIcon(IDI_DIS_WHI));

m_ToolBarCtrl.SetImageList(&m_ToolBarImages);
m_ToolBarCtrl.SetDisabledImageList(&m_ToolBarDisabledImages);

Observação

As listas de imagens usadas pelo objeto da barra de ferramentas devem ser objetos permanentes. Por esse motivo, elas geralmente são membros de dados de uma classe MFC; neste exemplo, a classe de janela de quadro principal.

Depois que as listas de imagens estiverem associadas ao objeto CToolBarCtrl, a estrutura exibirá automaticamente a imagem de botão adequada.

Confira também

Usando CToolBarCtrl
Controles