工具栏执点效果

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  工具栏按钮的热点效果

原文地址:https://www.cnblogs.com/liangxiaofeng/p/3548789.html