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.