默认情况下,工具栏控件中的按钮使用的图像存储为单个位图。 但是,还可以将按钮图像存储在一组图像列表中。 工具栏控件对象最多可以使用三个单独的图像列表:
已启用的图像列表包含当前已启用的工具栏按钮的图像。
禁用的图像列表包含当前禁用的工具栏按钮的图像。
突出显示的图像列表包含当前突出显示的工具栏按钮的图像。 仅当工具栏使用TBSTYLE_FLAT样式时,才会使用此图像列表。
将图像列表与 CToolBarCtrl
对象关联时,工具栏控件会使用这些图像列表。 通过调用 CToolBarCtrl::SetImageList、 SetDisabledImageList 和 SetHotImageList 来实现此关联。
默认情况下,MFC 使用 CToolBar
类实现 MFC 应用程序工具栏。 但是, GetToolBarCtrl
成员函数可用于检索嵌入 CToolBarCtrl
的对象。 然后,可以使用返回的对象调用 CToolBarCtrl
成员函数。
以下示例通过向对象m_ToolBarCtrl
()分配已启用的(m_ToolBarImages
)和禁用的(m_ToolBarDisabledImages
)图像列表CToolBarCtrl
来演示此技术。
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);
注释
工具栏对象使用的图像列表必须是永久性对象。 因此,它们通常是 MFC 类的数据成员;在此示例中,主框架窗口类。
图像列表与 CToolBarCtrl
对象关联后,框架会自动显示正确的按钮图像。