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

    可以通过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个按钮设为分隔条
		else
			array[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;                                           //获取工具栏按钮ID
	if (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;
}


 


 

你可能感兴趣的:(【初级】VS2015/MFC设置工具栏按钮提示)