具有热点效果和提示功能的工具栏

将工具栏设置成热点效果可以美化程序的界面。步骤不下

(1)创建一个基于对话框的应用程序。

(2)向对话框中添加一个按钮空间,并向程序中导入16个图标。

(3)在主窗口头文件中声明一个CToolBar类对象m_Toolbar和两个图像列表对象m_ImageList,m_HotImageList

其中,m_ImageList是工具栏按钮的图像列表对象,m_HotImageList是工具栏按钮的热点图像列表对象。

(4)在OnInitDialog函数中加载图标,关联图像列表,创建工具栏,代码如下

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<10;i++)
 {
         if (i==3||i==7)
         {
    array[i]=ID_SEPARATOR;
         }
         else
         {
    array[i]=i+1001;
         }
 }
 m_wndToolBar.CreateEx(this,TBSTYLE_FLAT);
 m_wndToolBar.SetButtons(array,10);
    m_wndToolBar.SetButtonText(0,"新建");
 m_wndToolBar.SetButtonText(1,"打开");
    m_wndToolBar.SetButtonText(2,"保存");
 m_wndToolBar.SetButtonText(4,"剪切");
 m_wndToolBar.SetButtonText(5,"复制");
    m_wndToolBar.SetButtonText(6,"粘贴");
 m_wndToolBar.SetButtonText(8,"打印");
 m_wndToolBar.SetButtonText(9,"帮助");
 m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);
 m_wndToolBar.GetToolBarCtrl().SetHotImageList(&m_HotImageList);
 m_wndToolBar.SetSizes(CSize(39,38),CSize(32,32));
 m_wndToolBar.EnableToolTips(TRUE);//激活工具栏的提示功能,
 RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

为了显示提示信息,需要处理TTN_NEEDTEXT消息。

在对话框的消息映射部分添加ON_NOTIFY_EX映射宏,代码如下:

ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnToolTipNotify)

添加消息处理函数OnToolTipNotify

//函数声明 afx_msg BOOL OnToolTipNotify(UNIT id,NMHDR* pNMHDR,LRESULT*pResult);

//函数定义:

BOOL CXJTU_MenuDlg::OnToolTipNotify(UINT id,NMHDR *pNMHDR,LRESULT* pResult)
{
 TOOLTIPTEXT *pTTT=(TOOLTIPTEXT*)pNMHDR;
 UINT nID=pNMHDR->idFrom;
 if (nID)
 {
  nID=m_wndToolBar.CommandToIndex(nID);
  if (nID!=-1)
  {
   m_wndToolBar.GetButtonText(nID,str);
   pTTT->lpszText=str.GetBuffer(str.GetLength());
   pTTT->hinst=AfxGetResourceHandle();
   return(TRUE);
  }
 }
 return(FALSE);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值