• 创建动态工具栏并设置工具栏按钮提示


    1、创建对话框程序,导入8个图标资源。

    2、在对话框头文件中声明变量,代码如下:

    CToolBar m_ToolBar;
     CImageList m_ImageList;
     CString  m_TipText;

    3、在对话框中oninitdialg函数中创建工具栏,如下:

    //创建图像列表
     m_ImageList.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));
     UINT array[11];
     for(int i=0;i<11;i++)
     {
      if(i==3 || i==7 || i==9)
       array[i] = ID_SEPARATOR; //第4、8、10个按钮为分隔条
      else
       array[i] = i+1001;
     }
     m_ToolBar.Create(this);
     m_ToolBar.SetButtons(array,11);
     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(10,"帮助");
     //关联图像列表
     m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);
     m_ToolBar.SetSizes(CSize(40,50),CSize(32,32)); //设置按钮和图标的大小
     m_ToolBar.EnableToolTips(TRUE);
     RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

    4、在对话框头文件中声明OnToolTipNotify函数,代码如下:

    afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );

    5、在对话框的源文件中添加ON_NOTIFY_EX映射宏,如下:

    ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify)

    6、添加消息处理函数OnToolTipNotify的实现部分,如下:

    BOOL CToolDlg::OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
    {
     TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
     UINT nID =pNMHDR->idFrom; //获取工具栏按钮ID
     if(nID)
     {
      UINT nIndex = m_ToolBar.CommandToIndex(nID); //根据ID获取按钮索引
      if(nIndex != -1)
      {
       m_ToolBar.GetButtonText(nIndex,m_TipText);     //获取工具栏文本
       pTTT->lpszText = m_TipText.GetBuffer(m_TipText.GetLength()); //设置提示信息文本
       pTTT->hinst = AfxGetResourceHandle();
       return TRUE;
      }
     }
     return FALSE;
    }

    7、运行结果。

  • 相关阅读:
    Microsoft.NET User Group
    白话MVP 和 MVVM 【转】
    高效的二分法TOP MAX/TOP MIN分页存贮过程
    策略模式5
    说说我们项目组的例行会议
    合格的项目经理
    说说我们的招聘和面试
    web安全问题汇总
    ASP.NET中常用的优化性能方法
    说说我们安排的培训
  • 原文地址:https://www.cnblogs.com/jinjiangongzuoshi/p/3293215.html
Copyright © 2020-2023  润新知