6.2.5 工具栏按钮的热点效果
将工具栏设置成具有热点效果可以美化程序界面。
实现步骤如下。
(1)创建一个基于对话框的应用程序。
(2)向对话框中添加一个按钮控件,并向程序中导入16个图标。
(3)在主窗口头文件中声明一个CToolBar类对象m_ToolBar和两个图像列表对象m_ImageList、m_HotImageList,代码如下:
CToolBar m_ToolBar;
CImageList m_ImageList;
CImageList m_HotImageList;
其中,m_ImageList是工具栏按钮的图像列表对象,m_HotImageList是工具栏按钮的热点图像列表对象。
(4)在OnInitDialog函数中加载图标,关联图像列表,创建工具栏,代码如下:
BOOL CHotToolDlg::OnInitDialog()
{
……
// TODO: Add extra initialization here
m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,1); //创建图像列表
m_HotImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,1); //创建热点图像列表
//向图像列表中添加图标
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON5));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON6));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON7));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON8));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON9));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON10));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON11));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON12));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON13));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON14));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON15));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON16));
UINT array[10];
for(int i=0;i<9;i++)
{
if(i= =3 || i= =7)
array[i] = ID_SEPARATOR; //第4、第8个按钮为分隔条
else
array[i] = i+1001;
}
m_ToolBar.CreateEx(this,TBSTYLE_FLAT); //创建工具栏窗口
m_ToolBar.SetButtons(array,10);
m_ToolBar.SetButtonText(0,"新建");
m_ToolBar.SetButtonText(1,"打开");
m_ToolBar.SetButtonText(2,"保存");
m_ToolBar.SetButtonText(4,"剪切");
m_ToolBar.SetButtonText(5,"复制");
m_ToolBar.SetButtonText(6,"粘贴");
m_ToolBar.SetButtonText(8,"打印");
m_ToolBar.SetButtonText(9,"帮助");
//关联图像列表
m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);
//关联热点图像列表
m_ToolBar.GetToolBarCtrl().SetHotImageList(&m_HotImageList);
m_ToolBar.SetSizes(CSize(40,40),CSize(32,32)); //设置按钮和图标的大小
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); //显示工具栏
return TRUE;
}
在创建具有热点效果的工具栏时,需要使用CreateEx创建工具栏窗口,只有创建的工具栏窗口具有TBSTYLE_FLAT属性时,工具栏按钮才具有热点效果。然后要使用工具栏控制类的SetHotImageList方法关联热点图像列表。
程序运行结果如图6.30所示。
图6.30 工具栏按钮的热点效果
原文:http://www.cnblogs.com/liangxiaofeng/p/3548789.html