【初级】VS2015/MFC设置工具栏按钮提示

来源:互联网 发布:淘宝客推广位是什么 编辑:程序博客网 时间:2024/04/28 08:01

    可以通过TTN_NEEDTEXT消息的处理函数OnToolTipNotify来实现设置工具栏按钮提示的功能。首先创建工具栏,然后调用SetButtonText方法设置工具栏按钮的显示文本。

    语法格式:BOOL  SetButtonText(int nIndex,LPCTSTR lpszText);

    然后在OnToolTipNotify消息处理函数中获得当前按钮问问,并在提示窗口中显示出来,获得按钮文本可以使用GetButtonText方法。

    语法格式:  CString  GetButtonText(int nIndex) const;

                        void  GetButtonText(int nIndex,CString&rString)const;

例子:1.创建一个基于对话框的应用程序;

2.导入8个图标资源;

3.在对话框头文件中声明变量:

CToolBar m_ToolBar;                 //工具栏对象CImageList m_ImageList;             //列表视图对象CString m_TipText;                  //工具栏提示文本

4.在对话框的OnInitDialog函数中创建工具栏:

m_ImageList.Create(32, 32, ILC_COLOR24 | ILC_MASK, 1, 1);           //创建图像列表m_ImageList.Add(AfxGetApp()->LoadIconW(IDI_ICON1));                 //向图像列表中添加图标m_ImageList.Add(AfxGetApp()->LoadIconW(IDI_ICON2));m_ImageList.Add(AfxGetApp()->LoadIconW(IDI_ICON3));m_ImageList.Add(AfxGetApp()->LoadIconW(IDI_ICON4));m_ImageList.Add(AfxGetApp()->LoadIconW(IDI_ICON5));m_ImageList.Add(AfxGetApp()->LoadIconW(IDI_ICON6));m_ImageList.Add(AfxGetApp()->LoadIconW(IDI_ICON7));m_ImageList.Add(AfxGetApp()->LoadIconW(IDI_ICON8));UINT array[11];                                                     //声明数组for (int i = 0; i < 11; i++)                                        //根据数组元素的个数进行循环{if (i == 3 || i == 7 || i == 9)                                 //判断是否为第4、8、10个按钮array[i] = ID_SEPARATOR;                                    //第4、8、10个按钮设为分隔条elsearray[i] = i + 1001;                                        //为数组元素赋值}m_ToolBar.Create(this);                                             //创建工具栏窗口m_ToolBar.SetButtons(array, 11);                                    //设置工具栏按钮的索引m_ToolBar.SetButtonText(0,_T("新建"));                              //设置工具栏文本m_ToolBar.SetButtonText(1, _T("打开"));m_ToolBar.SetButtonText(2, _T("保存"));m_ToolBar.SetButtonText(4, _T("剪切"));m_ToolBar.SetButtonText(5, _T("复制"));m_ToolBar.SetButtonText(6, _T("粘贴"));m_ToolBar.SetButtonText(8, _T("打印"));m_ToolBar.SetButtonText(10, _T("帮助"));m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);              //关联图像列表m_ToolBar.SetSizes(CSize(40, 40), CSize(32, 32));                   //设置按钮和图标大小m_ToolBar.EnableToolTips(1);                                        //激活工具栏的提示功能RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);    //显示工具栏


5.在对话框的头文件中声明OnToolTipNotify函数:

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

6.在对话框的源文件中添加ON_NOTIFY_EX映射宏:

ON_NOTIFY_EX(TTN_NEEDTEXT,0, OnToolTipNotify)

7.添加消息处理函数OnToolTipNotify的实现部分:

BOOL CToolBarDlg::OnToolTipNotify(UINT id, NMHDR*pNMHDR, LRESULT*pResult){TOOLTIPTEXT*pTTT = (TOOLTIPTEXT*)pNMHDR;                              UINT nID = pNMHDR->idFrom;                                           //获取工具栏按钮IDif (nID){UINT nIndex = m_ToolBar.CommandToIndex(nID);                     //根据ID获取按钮索引if (-1 != nIndex)                                                //判断索引是否正确{m_ToolBar.GetButtonText(nIndex, m_TipText);                  //获取工具栏文本pTTT->lpszText = m_TipText.GetBuffer(m_TipText.GetLength()); //设置提示文本信息pTTT->hinst = AfxGetResourceHandle();                        //获得资源句柄return true;}}return false;}


 


 

0 0